Corso Linux Base – Lezione 3
Documentazione e Manuali da riga di comando
La riga di comando è uno strumento molto complesso. Ogni comando ha le sue opzioni uniche, quindi la documentazione è la chiave quando si lavora con un sistema Linux. Oltre alla directory /usr/share/doc/, che contiene la maggior parte della documentazione, vari altri strumenti forniscono informazioni sull’uso dei comandi di Linux. Questo capitolo si concentra sui metodi per accedere a tale documentazione, allo scopo di ottenere assistenza. Esistono molti metodi per ottenere informazioni utilizzando la riga di comando di Linux. man, help e info sono solo alcuni di questi. In questa guida, ci concentreremo su man e info in quanto sono gli strumenti più comunemente utilizzati per ottenere aiuto. Un altro argomento di questo capitolo sarà l’individuazione dei file. Lavorerai principalmente con il comando locate.
Help
Quando vengono avviati con il parametro –help, la maggior parte dei comandi visualizza alcune brevi istruzioni sul loro utilizzo. Sebbene non tutti i comandi forniscano questa opzione, è comunque un buon primo tentativo di saperne di più sui parametri di un comando. Ricorda che le istruzioni di –help sono spesso piuttosto brevi rispetto alle altre fonti di documentazione di cui discuteremo nel resto di questa lezione.
Man Pages
La maggior parte dei comandi fornisce una pagina di manuale chiamata “man page”. Questa documentazione è di solito installata con il software ed è possibile accedervi con il comando man. Il comando di cui si sta cercando la documentazione viene aggiunto a man come argomento:
$ man mkdir
Questo comando apre il manuale di mkdir. Puoi usare i tasti freccia su e giù o la barra spaziatrice per navigare attraverso la “man page”. Per uscire, premi q. Ogni man page è divisa in un massimo di 11 sezioni, sebbene molte di queste sezioni 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 | Esempi della riga di comando |
SEE ALSO | Riferimenti incrociati agli argomenti correlati |
DIAGNOSTICS | Messaggi di avviso ed errore |
COPYRIGHT | Autore |
BUGS | Eventuali limiti noti del comando |
Nella pratica, la maggior parte delle man pages non contengono tutte queste parti. Le man pages sono organizzate in otto categorie, numerate da 1 a 8:
- Comandi Utente
- Chiamate di sistema
- Funzioni della libreria C
- Driver e file dei device
- Configurazione e formati dei File
- Giochi
- Varie
- Comandi Systema Administratore (comandi di sistema)
- Funzioni del Kernel
Ogni man page appartiene esattamente a una categoria. Tuttavia, più categorie possono contenere man page con lo stesso nome. Prendiamo il comando passwd come esempio. Questo comando può essere utilizzato per modificare la password di un utente. Poiché passwd è un comando utente, la sua pagina man appartiene alla categoria 1. Oltre al comando passwd, il file di database delle password /etc/passwd ha anche una pagina man che si chiama anche passwd. Poiché questo file è un file di configurazione, appartiene alla categoria 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 man page. Per impostazione predefinita, man passwd visualizza la prima pagina man disponibile, in questo caso passwd (1). La categoria della pagina man desiderata può essere specificata in un comando come man 1 passwd o man 5 passwd.
Abbiamo già parlato di come navigare una man page e su come tornare alla riga di comando. Internamente, man usa il comando less per visualizzare il contenuto della pagina man. less consente di cercare testo all’interno di una pagina man. Per cercare la parola linux puoi semplicemente usare /linux per la ricerca in avanti dal punto in cui ti trovi sulla pagina, oppure ?linux per iniziare una ricerca all’indietro. In questo caso verranno evidenziati tutti i risultati della corrispondenza e la pagina si sposterà sulla prima corrispondenza evidenziata. In entrambi i casi puoi digitare N per passare alla corrispondenza successiva. Per trovare ulteriori informazioni su queste funzionalità aggiuntive, premere H e verrà visualizzato un menu con tutte le informazioni.
Info Pages
Un altro strumento che ti aiuterà mentre lavori con il sistema Linux sono le info pages. Le info pages sono in genere più dettagliate delle pagine man e sono formattate in hypertext, in modo simile alle pagine Web su Internet. Le info pages possono essere visualizzate in questo modo:
$ info mkdir
Per ogni pagina, info legge un file di informazioni strutturato in singoli nodi all’interno di un albero. Ogni nodo contiene un argomento semplice e il comando info utilizza collegamenti ipertestuali che possono aiutarti a spostarti dall’uno all’altro nodo. È possibile accedere al collegamento premendo Invio mentre si posiziona il cursore su uno degli asterischi principali. Simile a man, info ha anche i comandi di navigazione della pagina. Puoi scoprire di più su questi comandi premendo ‘?’ mentre sei nelle info pages. Questi comandi ti aiuteranno a navigare più facilmente nella pagina e a capire come accedere ai nodi e come spostarsi all’interno della struttura dei nodi.
La cartella /usr/share/doc/
Come accennato in precedenza, la directory /usr/share/doc/ memorizza la maggior parte della documentazione dei comandi utilizzati dal sistema. Questa directory contiene una directory per la maggior parte dei pacchetti installati sul sistema. Il nome della directory è generalmente il nome del pacchetto e occasionalmente la sua versione. Queste directory includono un file README o readme.txt che contiene la documentazione di base del pacchetto. Oltre al file README, la cartella può contenere anche altri file di documentazione, come il log delle modifiche che include in dettaglio la cronologia del programma o esempi di file di configurazione per il pacchetto specifico. Le informazioni all’interno del file README variano da un pacchetto all’altro. Tutti i file sono scritti con un testo semplice, quindi possono essere letti con qualsiasi editor di testo. Il numero esatto e i tipi di file dipendono dal pacchetto. Controlla alcune delle directory per avere una panoramica dei loro contenuti.
Localizzare i file
Il comando locate
Un sistema Linux è costruito da numerose directory e file. Linux ha molti strumenti per localizzare un determinato file all’interno di un sistema. Il più veloce è il comando locate. Il comando locate effettua le ricerche all’interno di un database e restituisce tutti i nomi che corrispondono alla stringa specificata:
$ 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 di caratteri jolly ed espressioni regolari, pertanto la stringa di ricerca non deve corrispondere all’intero nome del file desiderato. Imparerai di più sulle espressioni regolari in un capitolo successivo. Per impostazione predefinita, locate si comporta come se la stringa cercata fosse circondata da asterischi, quindi locate PATTERN equi vale a locate *PATTERN*. Ciò consente di fornire solo sottostringhe anziché il nome file esatto. È possibile modificare questo comportamento con le diverse opzioni che sono spiegate nella man page di locate. Poiché locate legge da un database, potresti non trovare un file che hai creato di recente. Il database è gestito da un programma chiamato updatedb. Di solito viene eseguito periodicamente, ma se si dispone dei privilegi di root ed è necessario aggiornare immediatamente il database, è possibile eseguire il comando updatedb in qualsiasi momento.
Il comando find
Un altro strumento per cercare file molto popolare è find . Questo comando ha un approccio diverso rispetto al comando locate. Il comando find cerca ricorsivamente dentro una directory, incluse le sue sottodirectory. find fa una ricerca ad ogni invocazione, non mantiene un database come locate. Simile a locate, find supporta anche caratteri jolly ed espressioni regolari. find richiede almeno il percorso dove cercare. Inoltre, è possibile aggiungere vari parametri per fornire criteri di filtro dettagliati per i file da visualizzare. Un esempio è l’espressione -name, che cerca i file con un nome specifico:
~$ cd Downloads
~/Downloads
$ find . -name thesis.pdf
./thesis.pdf
~/Downloads
$ find ~ -name thesis.pdf
/home/carol/Downloads/thesis.pdf
Il primo find cerca il file ‘thesis.pdf’ nella directory corrente Downloads (viene utilizzato il carattere speciale ‘.’ per indicare la directory corrente). Il secondo find cerca invece il file ‘thesis.pdf’ nella directory home dell’utente attuale (viene utilizzato il carattere speciale ‘~’ per indicare la directory home dell’utente corrente).
Come detto è possibile utilizzare il comando find in maniera simile a locate utilizzando l’opzione -name seguita dalla stringa da cercare è aggiungendo il carattere ‘*’ prima e dopo la stessa
~$ cd Downloads
~/Downloads
$ find . -name *thesis*
./thesis.pdf
./thesis1.jpg
~/Downloads
Un altro parametro utile da conoscere nell’utilizzo di find è -iname. A questo proposito bisogna ricordare che i nomi dei file su Linux sono case sensitive, cioè è differente cercare ‘thesis’ e cercare ‘Thesis’. Con find è possibile fare una ricerca che non tenga conto dei caratteri maiuscoli\minuscoli in caso non si conosca esattamente il nome o la stringa da cercare, per farlo si può utilizzare il parametro -iname invece di -name:
~$ cd Downloads
~/Downloads
$ find . -iname *thesis*
./thesis.pdf
./thesis1.jpg
./Thesis2.jpg
~/Downloads