2.3 Lezione 1
Introduzione
Certificazione: |
Linux Essentials |
---|---|
Versione: |
1.6 |
Argomento: |
2 Trovare il Proprio Modo di Operare su un Sistema Linux |
Obiettivo: |
2.3 Utilizzo di Directory e Elenchi di File |
Lezione: |
1 di 2 |
File e Directory
Il filesystem Linux è simile ai filesystem degli altri sistemi operativi in quanto contiene file e directory. I file contengono dati, per esempio testo leggibile dall’uomo, programmi eseguibili o dati binari utilizzati dal computer. Le directory vengono utilizzate per organizzare il filesystem; 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
. La directory Documents
è ritenuta padre della directory Reports
.
Tip
|
Se il comando |
Nomi 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é molti caratteri speciali hanno un significato particolare nella shell Linux, è buona norma non utilizzare spazi o caratteri speciali quando si attribuiscono nomi a file o directory. Gli spazi, per esempio, richiedono che il carattere di escape \
sia inserito correttamente:
$ cd Mission\ Statements
Fai inoltre riferimento al nome file report2018.txt
. I nomi dei file possono contenere un suffisso che viene dopo il punto (.
). A differenza che in Windows, questo suffisso non ha alcun significato speciale in Linux; è lì per una maggiore usabilità. Nel nostro esempio .txt
ci indica che si tratta di un file di testo semplice, sebbene possa tecnicamente contenere qualsiasi tipo di dati.
Navigare nel Filesystem
Ottenere la Posizione Corrente
Poiché le shell Linux, come per esempio Bash, sono basate su testo è importante conoscere la posizione corrente durante la navigazione nel filesystem. Il prompt dei comandi fornisce questa informazione:
user@hostname ~/Documents/Reports $
Tieni presente che informazioni come user
e hostname
saranno trattate nelle future lezioni. Dal prompt ora sappiamo che la nostra posizione corrente è la directory Reports
. Allo stesso modo, il comando pwd
stamperà la directory di lavoro corrente (è l’acronimo di print working directory):
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
La relazione tra le directory è rappresentata da una barra obliqua (/
). 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 padre, ma non è affatto vero. La directory padre di home
si chiama root, ed è rappresentata dalla prima barra obliqua (/
). Parleremo della directory root in una delle prossime lezioni.
Nota che l’output del comando pwd
è leggermente diverso dal percorso mostrato sul prompt dei comandi. Invece di /home/user
, il prompt dei comandi contiene una tilde (~
). La tilde è un carattere speciale che rappresenta la directory home dell’utente. Ne discuteremo più in dettaglio nella prossima lezione.
Elencare il Contenuto di una Directory
Il contenuto della directory corrente viene elencato con il comando ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Nota che ls
non fornisce informazioni sulla directory padre. Allo stesso modo, per impostazione predefinita, ls
non mostra alcuna informazione sul contenuto delle sottodirectory. ls
può solo “vedere” ciò che si trova nella directory corrente.
Cambiare la Directory Corrente
La navigazione in Linux avviene principalmente tramite il comando cd
, che è usato per cambiare directory (è l’acronimo di change directory). Usando il comando pwd
visto in precedenza, notiamo che la nostra directory corrente è /home/user/Documents/Reports
. Possiamo cambiare la nostra directory corrente 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
Dalla nostra nuova posizione, possiamo “vedere” Mission-Statement.txt
e la nostra sottodirectory Reports
, ma non il contenuto di questa 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
Ora siamo tornati al punto di partenza.
Percorsi Assoluti e Relativi
Il comando pwd
stampa sempre un percorso assoluto. Ciò significa che il percorso contiene ogni passaggio, dall’inizio del filesystem (/
) alla fine (Reports
). I percorsi assoluti iniziano sempre con /
.
/ └── home └── user └── Documents └── Reports
Il percorso assoluto contiene tutte le informazioni richieste per arrivare a Reports
da qualsiasi punto del filesystem. Lo svantaggio è che è noioso da digitare.
Il secondo esempio (cd Reports
) è stato molto più semplice da digitare. Questo è un esempio di 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ò quella posizione perché è relativa alla mia posizione attuale. Ma se me lo dici per telefono, non riuscirò a trovare la casa del tuo amico: dovrai darmi l’indirizzo completo.
Percorsi Relativi Speciali
La shell Linux ci offre dei modi per abbreviare i percorsi durante la navigazione. Per rivelare i primi percorsi speciali, inseriamo il comando ls
con il flag -a
. Questo flag modifica il comando ls
in modo che vengano elencati tutti i file e le directory, inclusi i file e le directory nascoste:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Puoi fare riferimento alla pagina |
Questo comando ha rivelato due ulteriori risultati: questi sono percorsi speciali. Non rappresentano nuovi file o directory, ma piuttosto rappresentano delle directory che già conosci:
.
-
Indica la posizione corrente (in questo caso
Reports
). ..
-
Indica la directory padre (in questo caso
Documents
).
Di solito non è necessario utilizzare il percorso relativo speciale per la posizione corrente. È più facile e più comprensibile digitare report2018.txt
che ./report2018.txt
. Ma ci sono usi per .
che imparerai nelle prossime lezioni. Per il momento concentriamoci sul percorso relativo della directory padre:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
L’esempio di cd
è molto più semplice se si usa ..
invece del percorso assoluto. Inoltre, possiamo combinare questo pattern per navigare molto velocemente nell’albero dei file.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Esercizi Guidati
-
Per ciascuno dei seguenti percorsi, individua se è assoluto o relativo:
/home/user/Downloads
../Reports
/var
docs
/
-
Osserva la seguente struttura di file. Nota: le directory terminano con una barra obliqua (
/
) quandotree
viene invocato con l’opzione-F
. Avrai bisogno di privilegi elevati per eseguire il comandotree
nella directory root (/
). Il seguente è un esempio di output e non è indicativo di una struttura di directory completa. Usalo per rispondere alle seguenti domande:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Usa questa struttura per rispondere alle seguenti domande.
Un utente inserisce i seguenti comandi:
$ cd /etc/udev $ ls -a
Quale sarà l’output del comando
ls -a
? -
Inserisci il comando più breve possibile per ciascuna delle seguenti situazioni:
-
La tua posizione corrente è la directory root (
/
). Inserisci il comando per spostarti inlost+found
all’interno della directoryhome
(esempio):$ cd home/lost+found
-
La tua posizione corrente è la directory root (
/
). Inserisci il comando per spostarti nella directory chiamata/etc/network/
: -
La tua posizione corrente è la directory
/home/user/Documents/
. Spostati nella directory chiamata/etc/
. -
La tua posizione corrente è la directory
/etc/systemd/system/
. Spostati nella directory chiamata/home/user/
.
-
-
Considera i seguenti comandi:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Qual è l’output dell’ultimo comando
pwd
?
Esercizi Esplorativi
-
Supponiamo che un utente abbia inserito i seguenti comandi:
$ mkdir "this is a test" $ ls this is a test
Quale comando
cd
ti permette di entrare in questa directory? -
Prova di nuovo, ma, dopo aver digitato
cd this
, premi il tasto TAB. Che cosa viene visualizzato ora sul prompt?Questo è un esempio di completamento automatico, uno strumento preziosissimo non solo per risparmiare tempo, ma anche per prevenire errori di ortografia.
-
Prova a creare una directory il cui nome contenga un carattere
\
. Visualizza il nome della directory tramitels
ed elimina la directory.
Sommario
In questa lezione hai imparato:
-
Le basi del filesystem Linux;
-
La differenza tra directory padre e sottodirectory;
-
La differenza tra percorsi di file assoluti e percorsi di file relativi;
-
I percorsi relativi speciali
.
e..
; -
Come navigare nel filesystem usando
cd
; -
Come mostrare la posizione corrente usando
pwd
; -
Come elencare tutti i file e le directory usando
ls -a
.
In questa lezione sono stati discussi i seguenti comandi:
cd
-
Cambia la directory corrente.
pwd
-
Stampa il percorso della directory di lavoro corrente.
ls
-
Elenca il contenuto di una directory e mostra le proprietà dei file.
mkdir
-
Crea una nuova directory.
tree
-
Visualizza un elenco gerarchico di un albero di directory.
Risposte agli Esercizi Guidati
-
Per ciascuno dei seguenti percorsi, individua se è assoluto o relativo:
/home/user/Downloads
assoluto
../Reports
relativo
/var
assoluto
docs
relativo
/
assoluto
-
Osserva la seguente struttura di file. Nota: le directory terminano con una barra obliqua (
/
) quandotree
viene invocato con l’opzione-F
. Avrai bisogno di privilegi elevati per eseguire il comandotree
nella directory root (/
). Il seguente è un esempio di output e non è indicativo di una struttura di directory completa. Usalo per rispondere alle seguenti domande:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Un utente inserisce i seguenti comandi:
$ cd /etc/udev $ ls -a
Quale sarà l’output del comando
ls -a
?. .. rules.d udev.conf
-
Inserisci il comando più breve possibile per ciascuna delle seguenti situazioni:
-
La tua posizione corrente è la directory root (
/
). Inserisci il comando per spostarti inlost+found
all’interno della directoryhome
(esempio):$ cd home/lost+found
-
La tua posizione corrente è la directory root (
/
). Inserisci il comando per spostarti nella directory chiamata/etc/network/
:$ cd etc/network
-
La tua posizione corrente è la directory
/home/user/Documents/
. Spostati nella directory chiamata/etc/
.$ cd /etc
-
La tua posizione corrente è la directory
/etc/systemd/system/
. Spostati nella directory chiamata/home/user/
.$ cd /home/user
-
-
Considera i seguenti comandi:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Qual è l’output dell’ultimo comando
pwd
?/etc/systemd
Risposte agli Esercizi Esplorativi
-
Supponiamo che un utente abbia inserito i seguenti comandi:
$ mkdir "this is a test" $ ls this is a test
Quale comando
cd
ti permette di entrare in questa directory?$ cd this\ is\ a\ test
-
Prova di nuovo, ma, dopo aver digitato
cd this
, premi il tasto TAB. Che cosa viene visualizzato ora sul prompt?$ cd this\ is\ a\ test
Questo è un esempio di completamento automatico, uno strumento preziosissimo non solo per risparmiare tempo, ma anche per prevenire errori di ortografia.
-
Prova a creare una directory il cui nome contenga un carattere
\
. Visualizza il nome della directory tramitels
ed elimina la directory.Puoi eseguire l’escape della barra rovesciata utilizzando un’altra barra rovesciata (
\\
) o utilizzare le virgolette singole o doppie attorno al nome completo della directory:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'