Lavorare con le directory

Per scrivere il nome completo di un file, che permetta di individuarlo all'interno della sua directory, si comincia con / che indica la directory radice (root) e si scrive poi il nome di tutte le directory, separate da /, attraverso cui bisogna 'scendere' per raggiungere il file. Alla fine si scrive il nome del file. Per esempio: /home/rossi/programmi/hello.c. In questo caso il file hello.c si trova al'interno della directory programmi che a sua volta si trova nella directory rossi (il nome utente) che si trova nella home, a sua volta nella root.

Il nome del file scritto in questo modo completo viene detto in gergo tecnico pathname proprio perché mostra tutto il cammino dalla root fino alla posizione del file.

Fortunatamente non è sempre necessario specificare tutto il pathname: quando si usa un file che è nella cosiddetta directory di lavoro (quella corrente per intenderci), è sufficiente indicare solo il suo nome. Ad esempio, se vogliamo visualizzare il contenuto del file appuntamenti.txt che si trova nella directory di lavoro, possiamo dare semplicemente il comando:

more appuntamenti.txt

Bisogna tener presente che il file system è organizzato come un albero avente la directory root come tronco. I rami dell'albero sono tutte le varie sotto-directory. Quando si apre un terminale, la directory di lavoro è sempre la home directory dell'utente. Ad esempio, /home/rossi se il nostro nome utente è rossi.

Spostarsi fra le directory

Come ci spostiamo fra le directory? Per cambiare directory di lavoro il comando da utilizzare è cd (change directory). Ad esempio, per spostarsi nella directory /home/rossi/programmi si può dare il comando

cd /home/rossi/programmi

Se ci si trova già nella directory /home/rossi e si vuole scendere nella directory /home/rossi/programmi, è sufficiente dare il comando

cd programmi

Se vogliamo andare nella home directory dell'utente, da qualsiasi directory di partenza, è sufficiente dare il comando cd senza specificare nient'altro:

cd

Come facciamo a sapere in quale directory ci troviamo? Per conoscere la nostra directory di lavoro, possiamo dare il comando pwd (print working directory):

pwd

Abbiamo visto come scendere nelle sotto-directory, ma come facciamo a salire alla directory padre? Semplice: si usa l'abbreviazione .. Facciamo un esempio: supponiamo di trovarci nella directory /home/rossi/programmi e di voler salire nella directory /home/rossi. Ecco come si fa:

cd ..

Ovviamente .. può essere usata più di una volta: se vogliamo salire di due directory (per esempio da /home/rossi/programmi a /home), il comando da dare è:

cd ../..

E se siamo nella directory /home/rossi/programmi e vogliamo andare nella directory /home/rossi/documenti? Dobbiamo prima salire in /home/rossi e da qui scendere in /home/rossi/documenti. Quindi, daremo il comando:

cd ../documenti

Visualizzare il contenuto di una directory

Per conoscere il contenuto di una directory, cioè tutti i suoi file e le sue sotto-directory, si usa il comando ls (list). Questo comando ha molte opzioni che permettono di controllare il suo output. Se lo si invoca senza opzioni, visualizzerà una lista alfabetica dei nomi dei file e delle sotto-directory contenuti in una directory. Ad esempio per avere l'elenco alfabetico del contenuto della directory /usr/games, usiamo:

ls /usr/games

L'abbreviazione .. si può usare anche con ls. Per conoscere, ad esempio, il contenuto della nostra directory padre, cioè quella che contiene la nostra directory di lavoro, diamo il comando:

ls ..

Ovviamente .. può essere usato più volte anche con ls, così come si fa con cd.

Con i comandi che lavorano su file e directory è possibile usare caratteri speciali chiamati metacaratteri (o wildcard) che consentono di specificare determinati pattern nei nomi dei file o delle directory. Uno di tali metacaratteri molto usato nella pratica è l'asterisco. Ad esempio, se vogliamo elencare tutti i file che cominciano con la lettera a che sono nella nostra directory di lavoro, possiamo dare il comando:

ls a*

Se vogliamo elencare tutti i file in C, cioè quelli che terminano con l'estensione .c, possiamo dare il comando:

ls *.c

Vogliamo elencare tutti i file che cominciano con le lettere al e terminano con l'estensione .c? Semplice:

ls al*.c

Creare una nuova directory

Il comando mkdir consente di creare una nuova directory. Ecco la sintassi:

mkdir directory...

Per esempio, per creare la directory appunti nella directory di lavoro, si dà il comando:

mkdir appunti

Possiamo creare più directory in un colpo solo. Ad esempio, supponiamo di voler creare due directory nella directory di lavoro: musica e appunti. Supponiamo inoltre di voler creare anche due sotto-directory di appunti: storia e geografia. Possiamo fare tutto ciò con il seguente comando:

mkdir musica appunti appunti/storia appunti/geografia