2.2 Lezione 1
Certificazione: |
Linux Essentials |
---|---|
Versione: |
1.6 |
Argomento: |
2 Trovare il Proprio Modo di Operare su un Sistema Linux |
Obiettivo: |
2.2 Utilizzo della Command Line per Ottenere Aiuto |
Lezione: |
1 di 1 |
Introduzione
La Command Line è uno strumento molto complesso. Ogni comando ha le sue specifiche opzioni, per cui la documentazione è fondamentale quando si lavora con un sistema Linux. Oltre alla directory /usr/share/doc/
, che contiene la maggior parte della documentazione, diversi altri strumenti forniscono informazioni sull’uso dei comandi Linux. Questo capitolo si concentra sui metodi per accedere a tale documentazione per ottenere aiuto.
Esistono molti metodi per ottenere aiuto dalla Command Line di Linux: man
, help
e info
sono solo alcuni di questi. Per Linux Essentials, ci concentreremo su man
e info
poiché sono gli strumenti più frequentemente utilizzati per ottenere aiuto.
Un altro argomento di questo capitolo sarà la ricerca dei file. Lavorerai principalmente con il comando locate
.
Ottenere Aiuto dalla Command Line
Aiuto Interno
Quando vengono eseguiti con il parametro --help
, la maggior parte dei comandi mostra alcune brevi istruzioni sul loro utilizzo. Sebbene non tutti i comandi forniscano questa opzione è comunque una prima prova da fare per saperne di più sui parametri di un comando. Tieni presente che le indicazioni ottenute da --help
sono spesso piuttosto brevi rispetto alle altre fonti di documentazione di cui parleremo nel resto di questa lezione.
Pagine Man
La maggior parte dei comandi prevede una pagina di manuale o una pagina "man". Questa documentazione viene solitamente installata con il software ed è possibile accedervi con il comando man
. Il comando la cui pagina man deve essere visualizzata viene aggiunto a man
come argomento:
$ man mkdir
Questo comando apre la pagina man di mkdir
. È possibile utilizzare i tasti freccia su e giù o la barra spaziatrice per navigare nella pagina man. Per uscire dalla pagina man premi Q.
Ogni pagina man è suddivisa in un massimo di 11 sezioni, sebbene molte di queste siano opzionali:
Sezione | Descrizione |
---|---|
NAME |
Nome del comando e breve descrizione |
SYNOPSIS |
Descrizione della sintassi del comando |
DESCRIPTION |
Descrizione degli effetti del comando |
OPTIONS |
Opzioni disponibili |
ARGUMENTS |
Argomenti disponibili |
FILES |
File ausiliari |
EXAMPLES |
Un esempio della Command Line |
SEE ALSO |
Riferimenti incrociati agli argomenti correlati |
DIAGNOSTICS |
Messaggi di avviso ed errore |
COPYRIGHT |
Autore(i) del comando |
BUGS |
Eventuali limitazioni note del comando |
In realtà, la maggior parte delle pagine man non contiene tutte queste parti.
Le pagine man sono organizzate in otto categorie, numerate da 1 a 8:
Categoria | Descrizione |
---|---|
1 |
Comandi utente |
2 |
Chiamate di sistema |
3 |
Funzioni della libreria C |
4 |
Driver e file di dispositivo |
5 |
File di configurazione e formati di file |
6 |
Giochi |
7 |
Miscellanea |
8 |
Comandi dell’amministratore di sistema |
9 |
Funzioni del kernel (non standard) |
Ogni pagina man appartiene esattamente a una sezione. Tuttavia, più sezioni possono avere pagine man con lo stesso nome. Prendiamo come esempio il comando passwd
. Questo comando può essere utilizzato per cambiare la password di un utente. Dato che passwd
è un comando utente, la sua pagina man si trova nella sezione 1. Oltre al comando passwd
, anche il file del database delle password /etc/passwd
ha una pagina man che è chiamata anch’essa passwd
. Poiché questo file è un file di configurazione, appartiene alla sezione 5. Quando si fa riferimento a una pagina man, la categoria viene spesso aggiunta al nome della pagina man, come in passwd(1)
o passwd(5)
, per identificare la rispettiva pagina man.
Per impostazione predefinita man passwd
mostra la prima pagina man disponibile, in questo caso passwd(1)
. La categoria della pagina man desiderata può essere specificata nel comando come, per esempio, man 1 passwd
o man 5 passwd
.
Abbiamo già discusso come navigare in una pagina man e come tornare alla Command Line. Internamente man
utilizza il comando less
per mostrare il contenuto della pagina man. less
ti consente di cercare del testo all’interno di una pagina man. Per cercare la parola linux
puoi semplicemente usare /linux
per effettuare una ricerca in avanti rispetto al punto in cui ti trovi nella pagina, o ?Linux
per avviare una ricerca all’indietro. Questa azione evidenzia tutti i risultati trovati e sposta la pagina alla prima corrispondenza evidenziata. In entrambi i casi puoi premere N per passare alla corrispondenza successiva. Per avere ulteriori informazioni su queste funzioni aggiuntive, premi H e verrà visualizzato un menu con tutte le informazioni.
Pagine Info
Un altro strumento che ti sarà d’aiuto mentre lavori con un sistema Linux è rappresentato dalle pagine info. Le pagine info sono solitamente più dettagliate delle pagine man e sono formattate come ipertesti, in modo simile alle pagine web in Internet.
Le pagine info possono essere visualizzate in questo modo:
$ info mkdir
Per ciascuna di queste pagine il comando info
legge un file di informazioni che è strutturato in singoli nodi all’interno di un albero. Ogni nodo contiene un semplice argomento e il comando info
include dei collegamenti ipertestuali che possono aiutarti a muoverti da uno all’altro. È possibile accedere al collegamento premendo invio con il cursore posizionato su uno degli asterischi iniziali.
Come man
, lo strumento info
prevede anche dei comandi di navigazione all’interno della pagina. Per saperne di più su questi comandi premi ? all’interno della pagina info. Questi strumenti ti aiuteranno a navigare nella pagina più facilmente e a capire come accedere ai nodi e a muoverti all’interno dell’albero dei nodi.
La Directory /usr/share/doc/
Come accennato in precedenza, la directory /usr/share/doc/
contiene la maggior parte della documentazione dei comandi utilizzati dal sistema. /usr/share/doc/
contiene una directory per la maggior parte dei pacchetti installati sul sistema. Il nome della directory è solitamente il nome del pacchetto e talvolta include anche la sua versione. Queste directory contengono un file README
o readme.txt
con la documentazione di base del pacchetto. Oltre al file README
, la cartella può contenere anche altri file di documentazione, come per esempio il registro delle modifiche (changelog) che contiene la cronologia del programma in dettaglio, o esempi di file di configurazione per lo specifico pacchetto.
Le informazioni all’interno del file README
variano da un pacchetto all’altro. Tutti i file sono in formato testo e quindi possono essere letti con un qualunque editor di testo di tua scelta. Il numero esatto e il tipo di file dipendono dal pacchetto. Controlla alcune di queste directory per avere una panoramica del loro contenuto.
Trovare i File
Il Comando locate
Un sistema Linux è costituito da numerose directory e file. Linux ha molti strumenti per trovare un particolare file all’interno del sistema. Il più veloce è il comando locate
.
locate
cerca all’interno di un database e poi restituisce ogni nome che corrisponde alla stringa indicata:
$ locate note /lib/udev/keymaps/zepto-znote /usr/bin/zipnote /usr/share/doc/initramfs-tools/maintainer-notes.html /usr/share/man/man1/zipnote.1.gz
Il comando locate
supporta anche l’uso dei caratteri jolly e delle espressioni regolari; quindi la stringa di ricerca non deve corrispondere al nome completo del file desiderato. Potrai scoprirne di più sulle espressioni regolari in uno dei prossimi capitoli.
Per impostazione predefinita locate
si comporta come se il pattern di ricerca fosse tra asterischi; quindi locate PATTERN
è uguale a locate *PATTERN*
. Ciò ti consente di indicare solamente delle sottostringhe invece del nome esatto del file. Puoi modificare questo comportamento usando le diverse opzioni che trovi spiegate nella pagina man di locate
.
Poiché locate
legge da un database, potresti anche non trovare un file che hai creato di recente. Il database è gestito da un programma chiamato updatedb
. Di solito viene eseguito periodicamente, ma se hai privilegi di root e hai bisogno che il database venga aggiornato immediatamente, puoi eseguire tu stesso il comando updatedb
in qualsiasi momento.
Il Comando find
find
è un altro strumento molto popolare utilizzato per cercare i file. Questo comando ha un approccio diverso rispetto al comando locate
. Il comando find
cerca in modo ricorsivo in un albero di directory, includendo le sue sottodirectory. find
esegue una ricerca di questo tipo a ogni invocazione e non mantiene un database come locate
. In analogia con locate
, find
supporta anche i caratteri jolly e le espressioni regolari.
find
richiede almeno il percorso in cui deve cercare. Inoltre è possibile aggiungere le cosiddette espressioni per filtrare i file da visualizzare. Un esempio è l’espressione -name
, che cerca i file con uno specifico nome:
~$ cd Downloads ~/Downloads $ find . -name thesis.pdf ./thesis.pdf ~/Downloads $ find ~ -name thesis.pdf /home/carol/Downloads/thesis.pdf
Il primo comando find
cerca il file nella directory corrente Downloads
, mentre il secondo cerca il file nella directory home dell’utente.
Il comando find
è molto complesso e quindi non sarà trattato nell’esame Linux Essentials. Tuttavia, è uno strumento potente e particolarmente utile nel quotidiano.
Esercizi Guidati
-
Usa il comando
man
per scoprire cosa fa ogni comando:Comando Descrizione ls
Visualizza il contenuto di una directory.
cat
cut
cd
cp
mv
mkdir
touch
wc
passwd
rm
rmdir
more
less
whereis
head
tail
sort
tr
chmod
grep
-
Apri la pagina info di
ls
e identifica il MENU.-
Quali opzioni hai?
-
Trova l’opzione che ti consente di ordinare l’output in base alla data di modifica.
-
-
Visualizza il percorso dei primi 3 file
README
. Usa il comandoman
per individuare l’opzione corretta dilocate
. -
Crea un file chiamato
test
nella tua directory home. Trova il suo percorso assoluto con il comandolocate
. -
L’hai trovato subito? Che cosa hai dovuto fare affinché
locate
lo trovasse? -
Utilizzando il comando
find
cerca il file di test che hai creato in precedenza. Che sintassi hai usato e qual è il percorso assoluto?
Esercizi Esplorativi
-
C’è un comando nella tabella sopra riportata che non ha una pagina
man
. Qual è questo comando e perché pensi non abbia una pagina man? -
Utilizzando i comandi nella tabella sopra riportata crea il seguente albero di file. I nomi che iniziano con una lettera maiuscola indicano delle Directory, mentre quelli che iniziano con una lettera minuscola indicano dei file.
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
-
Visualizza sullo schermo la directory di lavoro corrente, includendo le sue sottodirectory.
-
Cerca all’interno dell’albero tutti i file che terminano con un numero.
-
Rimuovi tutti i rami della directory con un unico comando.
Sommario
In questa lezione hai imparato:
-
Come ottenere aiuto;
-
Come usare il comando
man
; -
Come navigare in una pagina
man
; -
Le diverse sezioni di una pagina
man
; -
Come usare il comando
info
; -
Come navigare tra i diversi nodi;
-
Come cercare i file all’interno del sistema.
Comandi utilizzati negli esercizi:
man
-
Visualizza una pagina man.
info
-
Visualizza una pagina info.
locate
-
Cerca nel database di
locate
i file con un specifico nome. find
-
Cerca nel file system i nomi che corrispondono a un insieme di criteri di selezione.
updatedb
-
Aggiorna il database di
locate
.
Risposte agli Esercizi Guidati
-
Usa il comando
man
per scoprire cosa fa ogni comando:Comando Descrizione ls
Visualizza il contenuto di una directory
cat
Concatena o visualizza file di testo
cut
Rimuove sezioni da un file di testo
cd
Passa a un’altra directory
cp
Copia un file
mv
Sposta un file (può essere utilizzato anche per rinominare)
mkdir
Crea una nuova directory
touch
Crea un file o aggiorna la data e l’ora dell’ultima modifica di un file esistente
wc
Conta il numero di parole, di righe o di byte di un file
passwd
Modifica la password di un utente
rm
Cancella un file
rmdir
Cancella una directory
more
Visualizza i file di testo una schermata alla volta
less
Visualizza i file di testo, consentendo di scorrere verso l’alto o verso il basso di una riga o di una pagina alla volta
whereis
Visualizza il percorso di un programma specificato e dei relativi file di manuale
head
Visualizza le prime righe di un file
tail
Visualizza le ultime righe di un file
sort
Ordina un file numericamente o alfabeticamente
tr
Converte o elimina caratteri in un file
chmod
Modifica i diritti di accesso di un file
grep
Cerca all’interno di un file
-
Apri la pagina info di
ls
e identifica il MENU.-
Quali opzioni hai?
-
Which files are listed (Quali file sono elencati)
-
What information is listed (Quali informazioni vengono visualizzate)
-
Sorting the output (Ordinare l’output)
-
Details about version sort (Dettagli sull’ordinamento per versione)
-
General output formatting (Formato generale dell’output)
-
Formatting file timestamps (Formato dei timestamp)
-
Formatting the file names (Formato dei nomi dei file)
-
-
Trova l’opzione che ti consente di ordinare l’output in base alla data di modifica.
-t
o--sort=time
-
-
Visualizza il percorso dei primi 3 file
README
. Usa il comandoman
per individuare l’opzione corretta dilocate
.$ locate -l 3 README /etc/alternatives/README /etc/init.d/README /etc/rc0.d/README
-
Crea un file chiamato
test
nella tua directory home. Trova il suo percorso assoluto con il comandolocate
.$ touch test $ locate test /home/user/test
-
L’hai trovato subito? Che cosa hai dovuto fare affinché
locate
lo trovasse?$ sudo updatedb
Il file è stato appena creato e quindi non è presente nel database.
-
Utilizzando il comando
find
cerca il file di test che hai creato in precedenza. Che sintassi hai usato e qual è il percorso assoluto?$ find ~ -name test
o
$ find . -name test /home/user/test
Risposte agli Esercizi Esplorativi
-
C’è un comando nella tabella sopra riportata che non ha una pagina
man
. Qual è questo comando e perché pensi non abbia una pagina man?Il comando
cd
. Non ha una pagina man poichè è un comando interno alla shell (built-in). -
Utilizzando i comandi nella tabella sopra riportata crea il seguente albero di file. I nomi che iniziano con una lettera maiuscola indicano delle Directory, mentre quelli che iniziano con una lettera minuscola indicano dei file.
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
La soluzione è una combinazione dei comandi
mkdir
etouch
. -
Visualizza sullo schermo la directory di lavoro corrente, includendo le sue sottodirectory.
$ ls -R
-
Cerca all’interno dell’albero tutti i file che terminano con un numero.
$ find ~ -name "*[0-9]" $ locate "*[0-9]"
-
Rimuovi tutti i rami della directory con un unico comando.
$ rm -r Documents Downloads Test test