Introduzione a Unix
Indietro | Capitolo 3 Iniziamo | Avanti

# 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

Indietro | Partenza | Avanti
Ottenere aiuto | Risali | Comandi di gestione dei file

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>.