Corso Linux / File system: percorsi assoluti, relativi e directory principali
Il file system di Linux si presenta come un unico albero di directory che parte da /. Un percorso identifica una posizione nell'albero: un percorso assoluto parte da /, mentre un percorso relativo viene interpretato dalla directory di lavoro corrente. Distinguere i due casi aiuta a capire su quale file agirà un comando.
Questa lezione spiega come leggere i percorsi e a cosa servono le directory più comuni. Per esercitarti cambiando posizione, consulta la lezione in inglese sulla navigazione con pwd, cd e ls.
Un unico albero di directory
A differenza della disposizione con lettere di unità tipica di Windows, Linux collega file e directory sotto una directory principale: la directory radice, o root directory, indicata con /. Anche un altro disco o file system viene normalmente collegato a una directory di questo albero. Tale collegamento si chiama mount, o montaggio: la directory che lo ospita è il punto di montaggio.
Dal solo aspetto di un percorso non puoi sapere su quale disco fisico siano memorizzati i dati. Una parte dell'albero può provenire da un altro disco, dalla rete o da un file system virtuale. Inoltre, container e ambienti isolati possono mostrare una propria vista dell'albero: i riferimenti alla stessa posizione presuppongono lo stesso ambiente.
/ e /root non sono la stessa cosa. / è l'inizio dell'albero; /root è di solito la directory personale, o home, dell'account amministratore root. Le home degli utenti ordinari si trovano spesso in /home/nomeutente, ma la configurazione degli account può assegnare una posizione diversa.
Percorsi assoluti e relativi
Un percorso assoluto inizia con /. Per esempio, /etc/hosts indica la stessa posizione nell'ambiente corrente indipendentemente dalla directory in cui ti trovi. Un percorso relativo parte invece dalla directory di lavoro corrente: se sei in /home/learner, notes/todo.txt indica /home/learner/notes/todo.txt.
| Notazione | Significato | Esempio |
|---|---|---|
/ |
Radice dell'albero dei file | /etc/hosts |
. |
Directory corrente | ./script.sh |
.. |
Directory superiore, o genitore | ../notes |
~ |
Notazione che la shell espande nella home dell'utente | ~/notes |
. e .. hanno un significato nella risoluzione dei percorsi: la directory stessa e la directory genitore. Non permettono di risalire oltre la radice; /.. indica ancora /. Si possono usare anche all'interno di percorsi più lunghi.
~ ha un ruolo diverso: è una notazione della shell, non una voce speciale del file system. In Bash, all'inizio di una parola non racchiusa tra virgolette, ~/notes viene espanso usando normalmente il valore della variabile HOME. Se HOME non è impostata, Bash cerca la home dell'utente che esegue la shell. Il percorso risultante non deve necessariamente esistere perché l'espansione avvenga.
Con le virgolette singole, '~/notes' resta invece una stringa che contiene letteralmente la tilde. Anche "~/notes" non esegue l'espansione della tilde in Bash: non basta cambiare tipo di virgolette. Per indicare la home seguita da un nome con spazi, puoi usare ~/'project notes', lasciando la tilde fuori dalle virgolette.
I percorsi usano / come separatore. I file system Linux distinguono generalmente maiuscole e minuscole: Notes e notes possono essere nomi diversi. Esistono però file system e configurazioni che non fanno tale distinzione, quindi verifica il comportamento dell'ambiente. Racchiudi un nome con spazi tra virgolette, come 'project notes', oppure proteggi gli spazi con un carattere di escape affinché la shell lo passi come un solo argomento.
A cosa servono le directory principali?
La tabella riassume usi comuni, non una descrizione garantita di ogni installazione. Una directory può mancare, essere un collegamento simbolico o ospitare un file system montato separatamente. La distribuzione e la configurazione effettiva restano il riferimento per il tuo sistema.
| Percorso | Uso tipico |
|---|---|
/home |
Directory personali degli utenti ordinari, se la configurazione le colloca qui. |
/etc |
Configurazioni del sistema e dei servizi specifiche della macchina. |
/usr |
Programmi, librerie, documentazione e dati condivisibili; non è la home degli utenti. |
/var |
Dati che cambiano durante l'uso: per esempio log, cache e dati di stato delle applicazioni. |
/tmp |
File temporanei, che possono essere eliminati secondo le politiche del sistema. |
/dev |
File speciali che rappresentano dispositivi e relative interfacce. |
/proc, /sys |
File system virtuali che espongono informazioni e interfacce del kernel e del sistema. |
/boot |
File necessari all'avvio, secondo la disposizione della distribuzione. |
/mnt, /media |
Punti convenzionali per montaggi temporanei e supporti rimovibili; alcuni desktop usano anche altre posizioni. |
Non modificare o eliminare alla cieca le voci di /proc e /sys come se fossero documenti ordinari: alcune interfacce scrivibili possono cambiare lo stato del sistema. Anche un file di dispositivo in /dev richiede di comprenderne la funzione prima di usarlo come destinazione di scrittura.
Non conservare documenti importanti a lungo in /tmp: non puoi presumere che sopravvivano al riavvio o alla pulizia periodica. Prima di modificare una configurazione in /etc, identifica il servizio interessato e salva una copia recuperabile. Queste directory non sono luoghi adatti per creare file di prova indiscriminatamente.
Esercitarsi a leggere un percorso
Leggi da sinistra a destra /home/learner/projects/report.txt. Il primo / è il punto di partenza; home, learner e projects sono le directory attraversate; report.txt è il componente finale. Il punto nel nome non dimostra il formato del file né la sua esistenza: è soltanto parte del nome.
Supponi ora che la directory corrente sia /home/learner/projects. Il percorso ../notes.txt indica notes.txt nella directory genitore /home/learner. Sono esempi ipotetici: non creano file e non presuppongono un account reale chiamato learner. Interpretare un percorso e verificare che esista sono due operazioni diverse.
Prima di usare un comando, controlla la posizione corrente e chiediti se il percorso è assoluto o relativo. Per esempio, pwd mostra la directory di lavoro e ls permette di esaminarne le voci. Collegamenti simbolici e opzioni logiche o fisiche di navigazione possono richiedere attenzione ulteriore: non ridurre ogni percorso a una semplice cancellazione testuale di ...
Questa verifica è particolarmente utile prima di spostare o cancellare file: un percorso relativo interpretato dalla posizione sbagliata può selezionare un altro oggetto. La lezione su terminale, shell e struttura dei comandi spiega come leggere ciò che stai per eseguire.
Riferimenti ufficiali
Il Filesystem Hierarchy Standard 3.0 descrive convenzioni generali di disposizione delle directory. Le pagine del progetto Linux man-pages hier(7), sulla gerarchia dei file e path_resolution(7), sulla risoluzione dei percorsi aiutano a distinguere le convenzioni dalla ricerca effettiva di una posizione nel sistema. Per la tilde consulta anche il manuale Bash sull'espansione della tilde.




