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.
In questo caso, la gestione dei file consiste nel copiarli, spostarli e rinominarli. Più avanti vedremo anche come fare per modificarne gli attributi (proprietario, permessi).
mkdir viene utilizzato per creare le directory. La sua sintassi è semplice:
mkdir [opzioni] <directory> [directory ...]
Solo un'opzione merita di essere commentata: l'opzione -p. Se la si utilizza, mkdir creerà le directory superiori se in precedenza non esistevano. Se non la si specifica, e le directory superiori non esistono, mkdir visualizzerà un errore. Esempi:
mkdir foo crea la directory foo nella directory corrente;
mkdir -p images/misc docs crea la directory misc nella directory images creando prima quest'ultima, se non esiste già, insieme alla directory docs.
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.
Questo comando è l'equivalente dei 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 è necessaria per cancellare una directory, vuota o meno. Tuttavia, si può usare anche il comando rmdir per cancellare directory vuote.
-i Richiede una conferma prima di ogni cancellazione. Si raccomanda di creare un alias per la parola rm che punti al comando rm -i nella vostra shell; lo stesso vale per i comandi cp e 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.
![]() | 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... |
La sintassi del comando mv è la seguente:
mv [opzioni] <file|directory> [file|directory ...] <destinazione> |
-f Forza lo spostamento dei file -- non avvisa 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 (Verbose), riporta tutte le modifiche effettuate.
mv -i /tmp/pics/*.gif . Sposta tutti i file nella directory /tmp/pics/ il cui nome finisce con .gif 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.
cp è l'equivalente dei comandi DOS copy, 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 deve essere sovrascritto.
cp -vR docs/ /shared/mp3s/* mystuff/ Copia l'intera directory docs nella directory corrente e tutti i file della directory /shared/mp3s alla directory mystuff situata nella directory corrente.
cp foo bar Crea una copia del file foo con il nome bar nella directory corrente.
[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. |