Capitolo 3. Introduzione alla linea di comando

Sommario

Comandi per la gestione dei file
mkdir, touch: creazione di directory e file vuoti
rm: cancellazione di file o directory
mv: spostare o rinominare dei file
cp: copiare file e directory
Gestione degli attributi dei file
chown, chgrp: cambiare il proprietario o il gruppo di uno o più file
chmod: modificare i permessi di file e directory
I caratteri speciali (meta-caratteri) e le espressioni regolari nella shell
La redirezione e le pipe
Ancora a proposito dei processi
La redirezione
Le pipe
Completamento automatico
Esempio
Altri metodi di completamento
Avviare e gestire i processi in background: il controllo dei job
Conclusione

Nel capitolo Capitolo 1 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 svolge un compito particolare. Qui ne vedremo soltanto alcuni. Una delle migliori caratteristiche di UNIX è la sua capacità di combinare questi programmi, come vedremo più avanti.

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).

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 l'opzione -p, mkdir non avrà successo, e si lamenterà per il fatto che tale directory è già presente.

Ecco alcuni esempi:

  • mkdir foo: crea la directory foo nella directory corrente;

  • 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 [2] . Se il file prima non esisteva, tuttavia, touch provvederà a creare i file desiderati come file vuoti. La sintassi è:

touch [opzioni] file [file...]

Quindi lanciando il comando

touch file1 images/file2

verranno creati un file vuoto chiamato file1 nella directory corrente, e un file vuoto file2 nella directory images, se i due file non esistevano già.

rm: cancellazione di file o directory

Il comando rm (ReMove) sostituisce 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 Mandrake Linux 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'esperienza dell'utente. 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[3].

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.

Avvertimento

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.

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. Se esisteva già una directory bar, l'effetto di questo comando sarebbe stato di spostare l'intera directory foo (la directory stessa più tutti i file e le directory che contiene, ricorsivamente) all'interno della directory 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.

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 nella directory /tmp/images alla 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.



[2] 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'inodo (mtime) e, infine, la data dell'ultima volta che il contenuto del file è stato modificato (ctime).

[3] È 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.