3.6. Navigazione e controllo delle directory

Il file system di Unix è organizzato come la struttura ramificata di un albero a partire da root. La directory root del sistema è rappresentata dal carattere di slash in avanti (/). Le directory di sistema e quelle degli utenti sono organizzate sotto la directory root. In Unix l'utente non ha una directory root; generalmente dopo il login gli utenti vengono posizionati nella loro directory home. Gli utenti possono creare altre directory sotto la loro directory home. La tabella che segue mostra alcuni comandi per la navigazione tra directory.

Tabella 3.1. Comandi di navigazione e controllo delle directory
Comando/SintassiCosa fa
cd [directory]cambia directory
ls [opzioni][directory o file]lista il contenuto della directory o i permessi del file specificato
mkdir [opzioni] directorycrea una directory
pwdmostra la directory (corrente) di lavoro
rmdir [opzioni] directoryrimuove una directory

Se si ha una certa familiarità con DOS la tabella che segue paragona i suoi simili comandi a quelli Unix in modo tale da fornire un appropriato quadro di riferimento.

Tabella 3.2. Comandi di navigazione e controllo delle directory Unix vs DOS
ComandoUnixDOS
lista il contenuto di una directorylsdir
crea una directorymkdirmd & mkdir
cambia directorycdcd & chdir
rimuove una directoryrmdirrm & rmdir
ritorna alla directory home dell'utentecdcd\
mostra la directory corrente di lavoropwdcd

3.6.1. pwd - mostra la directory di lavoro

In ogni momento si può determinare in che punto si è nella gerarchia del file system mostrando la directory di lavoro con il comando pwd(1), esempio:

% pwd
/home/frank/src

3.6.2. cd - cambia directory

Ci si può portare in una nuova directory con il comando cd(1), cambio di directory. cd(1) accetta sia path name (percorsi) assoluti sia path name relativi.

Sintassi

cd [directory]

Esempi:

cd (oppure chdir in alcune shell)cambia directory
cdsi posiziona nella directory home dell'utente
cd /si posiziona nella directory di sistema roor (/)
cd ..sale di un livello di directory
cd ../..sale di due livelli di directory
cd /completo/path/name/da/rootcambia directory rispetto a un path name assoluto (notare lo slash iniziale)
cd path/da/posizione/correntecambia directory rispetto a un path name relativo alla posizione corrente (no slash iniziale)
cd ~username/directorycambia directory rispetto alla directory home dell'utente specificato (il carattere ~ non è valido nella shell Bourne; vedere il Capitolo 5).

3.6.3. mkdir - crea una directory

La gerarchia della propria directory home si estende creando sotto-directory all'interno di essa. Questo è possibile con il comando mkdir(1), crea directory. Di nuovo si può specificare un path name assoluto o relativo della directory che si vuole creare.

Sintassi

mkdir [opzioni] directory

Opzioni generali

-pcrea una directory intermedia (genitore), quando necessario
-m modipermessi di accesso (SVR4). (Si vedranno i «modi» più avanti in questo Capitolo)

Esempi:

% mkdir /home/frank/data

oppure se la directory di lavoro corrente è /home/frank, il seguente comando è equivalente:

% mkdir data

3.6.4. rmdir - rimuove una directory

Per rimuovere una directory è necessario che questa sia vuota. Altrimenti bisogna prima rimuovere i file contenuti in essa. Inoltre, non si può rimuovere una directory se questa è la directory di lavoro corrente, bisogna prima uscire da quest'ultima.

Sintassi

rmdir directory

Esempi:

Per rimuovere la directory vuota /home/frank/data mentre si è in /home/frank usare:

% rmdir data

oppure

% rmdir /home/frank/data

3.6.5. ls - mostra i contenuti delle directory

Il comando per visualizzare le proprie directory e i propri file è ls(1). È possibile ottenere, attraverso le opzioni, informazioni circa la dimensione, il tipo, i permessi, la data di creazione, di modifica e di accesso del file.

Sintassi

ls [opzioni] [argomenti]

Opzioni generali

Quando non viene usato nessun argomento, viene mostrato il contenuto della directory corrente. Ci sono molte utili opzioni per il comando ls(1). Segue una lista di alcune di queste. Quando si usa il comando, le opzioni sono raggruppate insieme, precedute da un trattino (-).

-amostra tutti i file, inclusi quelli che iniziano con un punto (.)
-dmostra solo i nomi delle directory, non i file nella directory
-Findica il tipo di elemento terminandolo con un simbolo:
 directory /
 socket =
 link simbolico @
 eseguibile *
-gmostra il gruppo Unix assegnato al file, richiede l'opzione -l (BSD solamente) o su una macchina SVR4, esempio Solaris, questa opzione ha l'effetto opposto
-Lse il file è un link simbolico, mostra le informazioni del file o della directory a cui il link si riferisce, non le informazioni del link stesso
-llistato lungo: mostra i modi, informazioni di link, il proprietario, la dimensione, la data dell'ultima modifica del file. Se il file è un link simbolico, una freccia (-->) precede il percorso del file collegato.

Il campo modi viene fornito dall'opzione -l e consiste di 10 caratteri. Il primo carattere è uno dei seguenti:

CARATTERESE L'ELEMENTO E'
ddirectory
-file ordinario
bfile speciale per dispositivi a blocchi
cfile speciale per dispositivi a caratteri
llink simbolico
ssocket

I 9 caratteri successivi sono raggruppati in 3 blocchi di 3 caratteri ciascuno. Indicano i permessi di accesso al file: i primi 3 caratteri si riferiscono ai permessi del proprietario del file, i successivi 3 ai permessi degli utenti del gruppo Unix assegnato al file e gli ultimi 3 caratteri ai permessi degl'altri utenti sul sistema. Possono assumere i seguenti simboli:

rpermesso di lettura
wpermesso di scrittura
xpermesso di esecuzione
-permesso negato

Esistono altri permessi, specificamente progettati per essere usati in speciali situazioni. Questi sono spiegati nelle pagine man di ls(1).

Esempi:

Per mostrare i file in una directory

% ls
demofiles  frank  linda

Per mostrare tutti i file in una directory, inclusi i file nascosti (iniziano con un punto):

% ls -a
.   .cshrc  .history  .plan     .rhosts    frank
..  .emacs  .login    .profile  demofiles  linda

Per avere un listato lungo:

% ls -al
total 24
drwxr-sr-x 5 workshop acs 512 Jun 7 11:12  .
drwxr-xr-x 6 root     sys 512 May 29 09:59 ..
-rwxr-xr-x 1 workshop acs 532 May 20 15:31 .cshrc
-rw------- 1 workshop acs 525 May 20 21:29 .emacs
-rw------- 1 workshop acs 622 May 24 12:13 .history
-rwxr-xr-x 1 workshop acs 238 May 14 09:44 .login
-rw-r--r-- 1 workshop acs 273 May 22 23:53 .plan
-rwxr-xr-x 1 workshop acs 413 May 14 09:36 .profile
-rw------- 1 workshop acs 49  May 20 20:23 .rhosts
drwx------ 3 workshop acs 512 May 24 11:18 demofiles
drwx------ 2 workshop acs 512 May 21 10:48 frank
drwx------ 3 workshop acs 512 May 24 10:59 linda

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.

Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.