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/Sintassi Cosa fa
cd [directory] cambia directory
ls [opzioni][directory o file] lista il contenuto della directory o i permessi del file specificato
mkdir [opzioni] directory crea una directory
pwd mostra la directory (corrente) di lavoro
rmdir [opzioni] directory rimuove 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

Comando Unix DOS
lista il contenuto di una directory ls dir
crea una directory mkdir md & mkdir
cambia directory cd cd & chdir
rimuove una directory rmdir rm & rmdir
ritorna alla directory home dell'utente cd cd\
mostra la directory corrente di lavoro pwd cd

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
cd si 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/root cambia directory rispetto a un path name assoluto (notare lo slash iniziale)
cd path/da/posizione/corrente cambia directory rispetto a un path name relativo alla posizione corrente (no slash iniziale)
cd ~username/directory cambia 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

-p crea una directory intermedia (genitore), quando necessario
-m modi permessi 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 (-).

-a mostra tutti i file, inclusi quelli che iniziano con un punto (.)
-d mostra solo i nomi delle directory, non i file nella directory
-F indica il tipo di elemento terminandolo con un simbolo:
  directory /
  socket =
  link simbolico @
  eseguibile *
-g mostra 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
-L se 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
-l listato 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:

CARATTERE SE L'ELEMENTO E'
d directory
- file ordinario
b file speciale per dispositivi a blocchi
c file speciale per dispositivi a caratteri
l link simbolico
s socket

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:

r permesso di lettura
w permesso di scrittura
x permesso 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 <[email protected]>.
Per domande su questa documentazione, invia una e-mail a <[email protected]>.