Corso Linux Base – Lezione 4
File e Directory
Il filesystem di Linux è simile ai filesystem di altri sistemi operativi in quanto contiene file e directory. I file contengono dati come testo, immagini o dati binari. Le directory vengono utilizzate per creare un’organizzazione all’interno del filesystem. Le directory possono contenere file e altre directory.
$ tree
Documents
├── Mission-Statement.txt
└── Reports
└── report2018.txt
1 directory, 2 files
In questo esempio, Documents è una directory che contiene un file (Mission-Statement.txt) e una sottodirectory (Reports). La directory Reports a sua volta contiene un file chiamato report2018.txt. Si dice che la directory Documents sia il genitore (parent) della directory Reports.
Se il comando tree non è disponibile sul tuo sistema, installalo usando il gestore dei pacchetti della tua distribuzione Linux. Fare riferimento alla lezione sulla gestione dei pacchetti per scoprire come farlo.
Nomenclatura di File e Directory
I nomi di file e directory in Linux possono contenere lettere minuscole e maiuscole, numeri, spazi e caratteri speciali. Tuttavia, poiché ci sono molti caratteri speciali che hanno un significato nella shell di Linux, è buona norma non usare spazi o caratteri speciali quando si nominano file o directory. Gli spazi, ad esempio, richiedono che il carattere di escape ‘\’ sia inserito correttamente:
$ cd Mission\ Statements
I nomi dei file possono contenere un suffisso che viene dopo il punto (.), come nel caso del file report2018.txt visto in precedenza. A differenza di Windows, questo suffisso non ha alcun significato speciale in Linux; è lì per la comprensione umana. Nel nostro esempio .txt ci indica che si tratta di un file di testo semplice, sebbene possa contenere tecnicamente qualsiasi tipo di dati.
Navigazione nel filesystem
Ottenere la directory corrente
Poiché le shell Linux (come quella Bash) sono utilizzabili tramite riga di comando, è importante ricordare la posizione corrente durante la navigazione del filesystem. Il prompt dei comandi fornisce queste informazioni:
user@hostname ~/Documents/Reports $
Informazioni come user e hostname verranno trattate in futuro. Dal prompt, ora sappiamo che la nostra posizione corrente si trova nella directory Reports. Un altro modo per conoscere la directory corrente è utilizzare il comando pwd:
user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
La suddivisione fra le varie directory è rappresentata da una barra (/). Sappiamo che Reports è una sottodirectory di Documents, che è una sottodirectory di user, che si trova in una directory chiamata home. home non sembra avere una directory principale, ma non è affatto vero. Il genitore di home si chiama root ed è rappresentato dalla prima barra (/). Discuteremo la directory principale in una sezione successiva.
Si noti che l’output del comando pwd differisce leggermente dal percorso indicato sul prompt dei comandi. Invece di /home/user, il prompt dei comandi contiene una tilde (~). La tilde è un carattere speciale che rappresenta la home directory dell’utente. Questo sarà trattato in modo più dettagliato nella prossima lezione.
Elenco contenuti di una directory
Per elencare i contenuti di una directory è necessario utilizzare il comando ls:
user@hostname ~/Documents/Reports $ ls
report2018.txt
Si noti che ls non fornisce informazioni sulla directory principale. Allo stesso modo, per impostazione predefinita ls non mostra alcuna informazione sui contenuti delle sottodirectory.
Modifica della directory corrente
La navigazione in Linux viene eseguita principalmente con il comando cd che permette di cambiare directory. Dall’uso del comando pwd sappiamo che la nostra directory corrente è /home/user/Documents/Reports. Possiamo cambiarla inserendo un nuovo percorso:
user@hostname ~ $ cd /home/user/Documents
user@hostname ~/Documents $ pwd
/home/user/Documents
user@hostname ~/Documents $ ls
Mission-Statement.txt Reports
Eseguendo il comando ls dentro la nostra nuova directory, possiamo vedere il file Mission-Statement.txt e la sottodirectory Reports, ma non i contenuti della nostra sottodirectory. Possiamo tornare indietro a Reports in questo modo:
user@hostname ~/Documents $ cd Reports
user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
user@hostname ~/Documents/Reports $ ls
report2018.txt
Path relativi e assoluti
Il comando pwd visualizza sempre un percorso (path) assoluto. Ciò significa che il percorso assoluto contiene ogni passaggio, dalla cima del filesystem (/) alla fine (Reports). I percorsi assoluti iniziano sempre con un /.
/
└── home
└── user
└── Documents
└── Reports
Il percorso assoluto contiene tutte le informazioni necessarie per accedere a Reports da qualsiasi parte del file system. Lo svantaggio è che è noioso digitare tutto il percorso. Il secondo esempio (cd Reports) era molto più facile da digitare. Questo è un esempio di un percorso relativo. I percorsi relativi sono più brevi ma hanno significato solo in relazione alla posizione corrente. Considera questa analogia: vengo a trovarti a casa tua. Mi dici che il tuo amico vive nella porta accanto. Capirò la sua posizione perché è relativa alla mia posizione corrente. Ma se me lo dici per telefono, non sarò in grado di trovare la casa del tuo amico. Dovrai fornirmi l’indirizzo completo.
Speciali Path relativi
La shell di Linux ci dà il modo di abbreviare i nostri percorsi durante la navigazione. Per rivelare i primi percorsi speciali, inseriamo il comando ls con l’opzione -a. Questo flag modifica il comando ls in modo che tutti i file e le directory siano elencati, inclusi i file e le directory nascosti:
user@hostname ~/Documents/Reports $ ls -a
.
..
report2018.txt
Puoi fare riferimento alla man page di ls per capire cosa faccia l’opzione -a.
Questo comando ha dato altri due risultati rispetto al comando ls senza parametri: si tratta di due percorsi speciali. Non rappresentano nuovi file o directory, ma piuttosto directory che già conosci:
- ‘.’ Indica la posizione corrente (in questo caso, Reports).
- ‘..’ Indica la directory principale (in questo caso, Documents).
Di solito non è necessario utilizzare il percorso relativo speciale per la posizione corrente. È più semplice e comprensibile digitare report2018.txt che digitare ./report2018.txt. Ma il ‘.’ ha usi che imparerai nelle sezioni future. Per ora, ci concentreremo sul percorso relativo per la directory principale:
user@hostname ~/Documents/Reports $ cd ..
user@hostname ~/Documents $ pwd
/home/user/Documents
Come si vede dall’esempio è possibile utilizzare il percorso relativo che indica la directory principale per tornare indietro di una cartella (cd ..). Utilizzare questo comando aiuta a navigare rapidamente all’interno della struttura del filesystem.