Guida avanzata a Solaris

Directory e gerarchie

Finora è stato spiegato come elencare, copiare, rinominare e cancellare i file. A questo punto si possono esaminare questioni più ampie. Ad esempio, dove sono situati i file? In questo paragrafo viene descritta la struttura gerarchica delle directory. Si consiglia di leggere attentamente la parte descrittiva e quindi provare ad eseguire gli esempi illustrati nei paragrafi successivi.

Struttura gerarchica delle directory

I file sono raggruppati in directory, che a loro volta sono organizzate in una struttura gerarchica. Al livello più alto della gerarchia si trova la directory "radice" o "root", rappresentata da una barra "/".

Come illustrato nella figura Figura 3-1, ogni directory del file system può contenere a sua volta molte directory. Per convenzione, i diversi livelli delle directory vengono separati con una barra /. Si osservi ad esempio che la directory root (/) contiene, tra le altre, le sottodirectory /usr, /bin, /home e /lib. La sottodirectory /home contiene a sua volta utente1, utente2 e utente3.

Per specificare una directory (o un file al suo interno) occorre indicare i nomi delle directory in cui essa è contenuta. Questo tipo di indicazione viene detta percorso. Ad esempio, il percorso della directory utente3 che compare nella figura è /home/utente3.

Figura 3-1 La struttura gerarchica del file system

Graphic

Tutte le sottodirectory e i file contenuti in una stessa directory devono avere un nome unico, che li identifichi in modo esclusivo. È invece possibile che due o più file contenuti in directory diverse abbiano lo stesso nome. Ad esempio, la directory /usr contiene la sottodirectory /usr/lib. Tra /usr/lib e /lib non vi sono conflitti in quanto i percorsi sono diversi.

I percorsi dei file hanno esattamente la stessa struttura dei percorsi delle directory. Il percorso di un file descrive la sua collocazione nella gerarchia del file system. Ad esempio, se la directory /home/utente2 contiene un file di nome relazione5, il percorso del file sarà /home/utente2/relazione5. Questo percorso indica che il file relazione5 si trova nella directory utente2, la quale è contenuta nella directory home, la quale è contenuta a sua volta nella directory root (/).

Le directory possono contenere solo sottodirectory, solo file o entrambi.

Visualizzazione della directory corrente (pwd)

Il comando pwd visualizza la posizione attuale dell'utente nella gerarchia del file system:

$ pwd
/home/utente1

L'esempio precedente ha valore puramente indicativo, in quanto l'output del comando dipende dalla struttura delle directory del sistema. La posizione corrente nella gerarchia del file system viene detta directory corrente.

La directory home

Ogni utente dispone di una propria directory home. Aprendo una Finestra di comando o una Shell nell'ambiente OpenWindows, la posizione iniziale è sempre la directory home. Questa directory viene predisposta dall'amministratore del sistema al momento della creazione del profilo utente.

Spostamento in un'altra directory (cd)

Il comando cd permette di spostarsi in un'altra directory della gerarchia del file system:

$ cd /usr/lib
$ pwd
/usr/lib

Digitato senza argomenti, il comando cd riporta l'utente alla sua directory home. Se ad esempio la directory home è /home/utente1, il comando ha l'effetto seguente:

$ cd
$ pwd
/home/utente1

Nelle C shell, si può utilizzare il carattere tilde (~) come abbreviazione per la directory home. Ad esempio, per spostarsi nella sottodirectory musica sotto la propria directory home si potrà digitare:

esempio% cd ~/musica

Il tilde può essere utilizzato anche per specificare la directory home di un altro utente. Ad esempio, digitando:

esempio% cd ~nomeutente

dove nomeutente è il nome di login di un altro utente, ci si sposterà nella directory home di quell'utente.


Nota -

Se si utilizza una Bourne shell, il carattere ~ non ha lo stesso effetto.


Se si utilizza la Bourne shell, è possibile che l'amministratore di sistema abbia configurato la workstation in modo che il comando $home specifichi la directory home dell'utente. In questo caso, digitando:

$ $home/musica

ci si sposterà nella sottodirectory musica della propria directory home. Analogamente, digitando:

$ $homenomeutente

dove nomeutente rappresenta il nome di login di un altro utente, ci si sposterà nella directory home dell'utente specificato.

La directory immediatamente "sopra" una sottodirectory viene detta directory di livello superiore. Nell'esempio precedente, /home è la directory di livello superiore rispetto a /home/utente1. Il livello superiore viene indicato con il simbolo .. ("punto-punto"). Il comando cd .. produce perciò uno spostamento nella directory di livello superiore, come illustrato nell'esempio seguente:

$ pwd
/home/utente1
$ cd ..
$ pwd
/home

Se la directory corrente è /home/utente1 e si desidera operare su un file contenuto in /home/utente2, è possibile utilizzare il comando seguente:

$ pwd
/home/utente1
$ cd ../utente2
$ pwd
/home/utente2

Il percorso ../utente2 ordina al sistema di cercare utente2 nella directory di livello superiore. L'uso di questo comando abbreviato permette di non scrivere l'intero percorso /home/utente2.

Creazione di una directory (mkdir)

La creazione di una nuova directory è un'operazione molto semplice. È sufficiente digitare il comando mkdir seguito dal nome della nuova directory:

$ mkdir fiori
$ cd fiori
$ mkdir primule
$ cd primule
$ pwd
/home/utente2/fiori/primule

Percorso relativo

Il percorso completo di una directory o di un file inizia con una barra (/) e descrive l'intera struttura della directory tra il file o la directory specificata e la directory radice. In molti casi è tuttavia possibile utilizzare un percorso più breve che indichi la posizione relativa del file o della directory rispetto alla directory di lavoro corrente.

Per spostarsi in una sottodirectory della directory corrente è sufficiente indicare il nome della directory di destinazione senza specificarne il percorso. Nell'esempio precedente, il comando cd fiori utilizza il percorso relativo della directory di destinazione. Il suo percorso completo, supponendo che la directory corrente sia /home/utente2, sarebbe infatti /home/utente2/fiori.

Provare a creare diverse sottodirectory e a spostarsi dall'una all'altra. Usare sia i percorsi completi che i percorsi relativi e verificare di volta in volta la posizione corrente con il comando pwd.

Spostamento e cambiamento di nome alle directory

Per cambiare nome a una directory, si esegue un comando che "sposta" la directory originale in un'altra di nome diverso. Il comando da utilizzare è mv:

$ pwd
/home/utente2/fiori
$ ls
primule
$ mv primule viole
$ ls
viole

Il comando mv permette anche di spostare una directory all'interno di un'altra:

$ pwd
/home/utente2/fiori
$ ls
viole
$ mv viole ../fiori2
$ ls ../fiori2
viole

In questo esempio, la directory viole viene spostata da fiori a fiori2 utilizzando il comando mv.

Copia di una directory

Il comando cp -r permette di copiare un'intera directory e il suo contenuto:

$ cp -r fiori fiori3
$

Questo comando copia tutti i file e le sottodirectory contenute nella directory fiori in una nuova directory fiori3. Questa operazione viene detta copia ricorsiva, e viene specificata con l'opzione -r. Se si cerca di copiare una directory senza usare questa opzione viene visualizzato un messaggio di errore.

Cancellazione di una directory (rmdir)

Per cancellare una directory vuota, usare il comando rmdir come segue:

$ rmdir fiori3
$ 

Se la directory specificata contiene file o sottodirectory, il comando rmdir non la cancella.

Per cancellare una directory e tutto il suo contenuto, comprese eventuali sottodirectory e i rispettivi file, occorrerà utilizzare rm -r (aggiungendo cioè l'opzione ricorsiva -r). Digitare quanto segue:

$ rm -r fiori3
$


Avvertenza - Avvertenza -

Le directory cancellate con il comando rmdir non possono essere recuperate, possono essere recuperate le directory cancellate con rm -r.