Capitolo 3. Introduzione alla linea di comando

Sommario
3.1. Comandi per la gestione dei file
3.1.1. mkdir, touch: creazione di directory e file vuoti
3.1.2. rm: cancellazione di file o directory
3.1.3. mv: spostare o rinominare dei file
3.1.4. cp: copiare file e directory
3.2. Gestione degli attributi dei file
3.2.1. chown, chgrp: cambiare il proprietario o il gruppo di uno o più file
3.2.2. chmod: modificare i permessi di file e directory
3.3. I caratteri speciali (meta-caratteri) e le espressioni regolari nella shell
3.4. La redirezione e le pipe
3.4.1. Ancora a proposito dei processi
3.4.2. La redirezione
3.4.3. Le pipe
3.5. Completamento automatico
3.5.1. Esempio
3.5.2. Altri metodi di completamento
3.6. Avviare e gestire i processi in background: il controllo dei job
3.7. Conclusione

Nel capitolo Concetti base di Unix vi abbiamo spiegato come aprire una shell. In questo capitolo vi mostreremo come utilizzarla.

La principale dote della shell è il numero di programmi di utilità di cui dispone: ce ne sono migliaia, e ciascuno può svolgere un compito particolare. Qui ne vedremo soltanto alcuni. Una delle migliori caratteristiche di Unix è la sua capacità di combinare questi programmi, come vedremo.

3.1. Comandi per la gestione dei file

In questo contesto, la gestione dei file consiste nel copiarli, spostarli e cancellarli. Più avanti vedremo anche come fare per modificarne gli attributi (proprietario, permessi).

3.1.1. mkdir, touch: creazione di directory e file vuoti

Il comando mkdir (MaKe DIRectory) viene utilizzato per creare le directory. La sua sintassi è semplice:
mkdir [opzioni] <directory> [directory ...]
Solo un'opzione merita di essere commentata: l'opzione -p. Questa ha due usi particolari:

  1. creerà le directory superiori se in precedenza non esistevano. Se non la si specifica, mkdir non avrà successo e si lamenterà per il fatto che le directory indicate non esistono;

  2. terminerà senza messaggi di errore se la directory che intendiamo creare esiste già. Come prima, se si omette di specificare l'opzione -p, mkdir non avrà successo, e si lamenterà per il fatto che tale directory è già presente.

Ecco alcuni esempi:

  1. mkdir foo: crea la directory foo nella directory corrente;

  2. mkdir -p images/misc docs: crea la directory misc nella directory images creando per prima quest'ultima, se non esiste già (-p); inoltre crea una directory docs nella directory corrente.

Il comando touch non è nato con la funzione di creare dei file, ma quella di aggiornare le date di accesso e di modifica dei file[1]. Se il file prima non esisteva, tuttavia, touch provvederà a creare i file desiderati come file di dimensione 0. La sintassi è:

touch [opzioni] file [file...]

Quindi lanciando il comando

touch file1 images/file2

verranno creati un file di dimensione pari a 0 chiamato file1 nella directory corrente, e un file di dimensione 0 file2 nella directory images.

3.1.2. rm: cancellazione di file o directory

Il comando rm (ReMove) corrisponde a due comandi DOS, del e deltree, rispetto ai quali dispone di più opzioni. Ecco la sua sintassi:
rm [opzioni] <file|directory> [file|directory...]
Le sue opzioni includono:

  • -r, o -R: cancella ricorsivamente. Questa opzione è obbligatoria per cancellare una directory, vuota o meno. Per cancellare directory vuote, comunque, si può usare anche il comando rmdir.

  • -i: richiede una conferma prima di ogni cancellazione. Si noti che, come opzione predefinita, per motivi di sicurezza in Linux-Mandrake rm non è che un alias per rm -i; lo stesso vale per i comandi cp e mv. L'utilità di questi alias varia a seconda dell'utente (sono comunque molto utili per i principianti). Se volete rimuoverli, è sufficiente modificare il file .bashrc aggiungendo questa riga: unalias rm cp mv.

  • -f: l'opposto dell'opzione -i, forza la cancellazione di file e directory, anche se l'utente non ha i diritti di scrittura sui file[2].

Alcuni esempi:

  • rm -i images/*.jpg file1: cancella tutti i file il cui nome termina con .jpg nella directory images e il file file1 nella directory corrente, richiedendo una conferma per ciascun file. Rispondete y per confermare la cancellazione, n per annullarla.

  • rm -Rf images/misc/ file*: cancella, senza chiedere conferma, l'intera directory misc/ nella directory images/ insieme a tutti i file che si trovano nella directory corrente e il cui nome comincia con file.

Attenzione

Un file cancellato usando rm è perduto in maniera definitiva. Non c'è alcun modo per recuperare il file! Non esitate a utilizzare l'opzione -i in modo da esser sicuri di non cancellare nulla per errore...

3.1.3. mv: spostare o rinominare dei file

La sintassi del comando mv (MoVe) è la seguente:

mv [opzioni] <file|directory> [file|directory ...] <destinazione>

Alcune opzioni:

  • -f: forza lo spostamento dei file - non avvisando se qualche file preesistente viene sovrascritto dall'operazione.

  • -i: l'opposto - richiede all'utente una conferma prima di sovrascrivere un file esistente.

  • -v: modalità prolissa (ingl. verbose), riporta tutte le modifiche effettuate.

Alcuni esempi:

  • mv -i /tmp/pics/*.png .: sposta tutti i file nella directory /tmp/pics/ il cui nome finisce con .png nella directory corrente (.), richiedendo una conferma prima di sovrascrivere qualsiasi file.

  • mv foo bar: rinomina il file foo come bar.

  • mv -vf file* images/ trash/: sposta dalla directory corrente, senza chiedere conferma, tutti i file il cui nome comincia per file e l'intera directory images/ nella directory trash/, e mostra tutte le operazioni effettuate.

3.1.4. cp: copiare file e directory

Il comando cp (CoPy) corrisponde a due comandi DOS, copy e xcopy, rispetto ai quali dispone di più opzioni. Questa è la sua sintassi:

cp [opzioni] <file|directory> [file|directory ...] <destinazione>

cp ha moltissime opzioni. Queste sono le più comuni:

  • -R: copia ricorsiva; obbligatorio se si vuole copiare una directory, anche se vuota.

  • -i: richiede una conferma prima di sovrascrivere qualsiasi file preesistente.

  • -f: l'opposto dell'opzione -i, sostituisce qualsiasi file esistente senza chiedere conferma.

  • -v: modalità prolissa, visualizza tutte le azioni compiute dal comando cp.

Alcuni esempi:

  • cp -i /tmp/images/* images/: copia tutti i file dalla directory /tmp/images nella directory images/ che si trova all'interno della directory attuale, richiedendo una conferma se un file sta per essere sovrascritto.

  • cp -vR docs/ /shared/mp3s/* mystuff/: copia l'intera directory docs più tutti i file della directory /shared/mp3s nella directory mystuff.

  • cp foo bar: crea una copia del file foo con il nome bar nella directory corrente.

Note

[1]

In Unix vi sono tre diverse date registrate assieme ai file: la data dell'ultimo accesso al file (atime), vale a dire l'ultima volta che il file è stato aperto in lettura o scrittura; la data dell'ultima volta che sono stati modificati gli attributi dell'inode (mtime) e, infine, la data dell'ultima volta che il contenuto del file è stato modificato (ctime).

[2]

È sufficiente per un utente possedere i diritti di scrittura su una directory per poter cancellare i file che contiene, anche se non è il proprietario di tali file.


Tux on Star from MandrakeSoft Linux è un marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/