MAN: un aiuto insostituibile

Le pagine "man" ovvero, le pagine di manuale, sono il naturale compendio di un buon software. Sono un aiuto insostituibile per chiunque utilizzi un S.O. degno di questo nome. Nella loro semplicità riescono a fornire un valido aiuto sia al professionista che al principiante, fornendo tutte le indicazioni sul software che vogliamo adoperare.

Un aiuto insostituibile, le pagine "man"


Author: Ferdinando Ferranti
Contact: zap@teppisti.it
Revision: 0.1
Date: 15/07/2005
Copyright: Questo documento viene rilasciato sotto licenza GPL,
versione 2 o successive.

Le pagine "man" ovvero, le pagine di manuale, sono il naturale compendio di un buon software. Sono un aiuto insostituibile per chiunque utilizzi un S.O. degno di questo nome. Nella loro semplicità riescono a fornire un valido aiuto sia al professionista che al principiante, fornendo tutte le indicazioni sul software che vogliamo adoperare.

La pagina man

man è il paginatore dei manuali di sistema. L'argomento che viene passato a man è solitamente un comando. Una volta eseguita la combinazione verrà mostrata la pagina di manuale associata al comando. In pratica è usuale, specie su UNIX, accompagnare un software con documentazione che descriva le funzionalità del software stesso. Nel generico "documentazione" sono ovviamente comprese anche le pagine di manuale. Questo è ancora più vero per software che siano sfruttabili non solo all'interno dell'interfaccia grafica ma anche in console. In pratica tutti i vari comandi di shell, utilizzabili in console, hanno la loro brava pagina man, che sarà attivabile così:

$ man <comando_sconosciuto>

Ad esempio eseguendo $ man ls verrà visualizzata la pagina di manuale del comando ls. Gli argomenti delle opzioni ("-x") racchiusi da parentesi quadre, come [-abc] indicano che ognuno degli argomenti è facoltativo, invece nel caso siano indicati con "-a|-b" significherà che ogni argomento rappresenta un'opzione che esclude l'altra ("-a" non puù essere inserito con "-b").

Ci si potrà "muovere" all'interno della pagina di manuale semplicemente con i tasti freccia, si puù anche ricercare un termine, dopo aver avviato man su un comando, premendo il tasto "/".

Le pagine man vengono memorizzate in una base di dati per poi poter essere richiamate con l'apposito comando man, pertanto occorre ricostruire ed aggiornare questa base di dati periodicamente. Ormai praticamente quasi tutte le distribuzioni GNU/Linux si avvalgono di un particolare comando, mandb che, manualmente, eseguito da root, permette l'aggiornamento del citato database. Peraltro occorre dire anche che la stragrande maggioranza dei sistemi UNIX ha in cron la rigenerazione periodica mediante uno script che, direttamente tramite mandb o eseguendo qualche altro comando, aggiorna la citata base di dati.

La struttura delle pagine man

Le pagine di manuale vengono strutturate in più parti, ovvero, il "nome", la "sintassi", la "descrizione", le "opzioni", i "file" correlati, i "collegamenti" con altri comandi (i "vedete anche") o software, i "problemi" eventuali e l'"autore" del programma. I nomi sono già di per sé piuttosto autoesplicativi e non mi pare che necessitino di ulteriori approfondimenti.

La struttura delle pagine di manuale è piuttosto rigida, per una questione di uniformità, quindi se ci capiterà di incontrare della documentazione di un programma qualsiasi, se presente, la pagina di manuale dovrà avere questa struttura.

Le sezioni delle pagine man

Esistono delle convenzioni anche per ciù che riguarda le suddivisioni in "sezioni" delle pagine man ovvero, ogni sezione riguarderà uno specifico argomento del software.

La seguente tabella mostra esattamente cosa dovremmo trovare in ogni sezione di pagina di manuale:



1 Programmi eseguibili e comandi della shell
2 Chiamate al sistema (funzioni fornite dal kernel)
3 Chiamate alle librerie (funzioni all'interno delle librerie di sistema)
4 File speciali (di solito rintracciabili in /dev)
5 Formati dei file e convenzioni p.es. /etc/passwd
6 Giochi
7 Pacchetti di macro e convenzioni p.es. man(7), groff(7).
8 Comandi per l'amministrazione del sistema (solitamente solo per root)
9 Routine del kernel [Non standard]

Ad esempio, con man -a <comando> verranno mostrate, in sequenza, tutte le pagine di manuale del <comando>:

$ whatis intro
intro (8)    - Introduction to administration and privileged 
                  commands
intro (1)    - Introduction to user commands
intro (7)    - Introduction to conventions and miscellany section
intro (3)    - Introduction to library functions
intro (5)    - Introduction to file formats
intro (2)    - Introduction to system calls
intro (6)    - Introduction to games
intro (4)    - Introduction to special files

$ man -a intro

Per visualizzare solamente una particolare sezione della pagina di manuale, ad esempio, la 3:

$ man 3 intro

Trucchi

Direi che è utile conoscere subito due comandi, whatis ed apropos. Il primo comando, whatis mostra il nome e la breve descrizione della pagina di manuale, è consigliabile (tanto per rimanere in tema...) di leggere la relativa pagina man, comunque con questa sintassi, su un computer a caso otteniamo:

$ whatis -w apac*
apache2 (8)          - Apache hypertext transfer protocol server
apache2ctl (8)       - Apache HTTP server control interface

È evidente che tramite l'opzione facoltativa -w vengono ammessi i caratteri wildcard, detti anche caratteri jolly. Vengono trovate tutte le pagine di manuale che iniziano con apac*.

Il secondo comando, apropos ricerca nei nomi e nelle descrizioni le istanze della parola_chiave immessa, ad esempio:

$ apropos apac
a2dismod (8)         - disables an apache2 module
a2enmod (8)          - enables an apache2 module
ab (8)               - Apache HTTP server benchmarking tool
apache2 (8)          - Apache hypertext transfer protocol server

etc. etc. ...

La localizzazione delle pagine man

In tutte le distribuzioni GNU/Linux è presente un package che racchiude al suo interno le traduzioni delle pagine di manuale. Se il vostro sistema è localizzato in italiano, una volta installato il pkg le pagine di manuale predefinite saranno nella vostra lingua. Ma come tutte le rose, anche questo pkg ha le sue spine... ovviamente non sono state tradotte tutte le pagine di manuale e non tutte sono aggiornate. Se volete un consiglio di cuore, se non conoscete bene l'inglese potete usare la seguente soluzione. Ipotizzando quindi che il vostro sistema sia localizzato per l'italiano, potete usare il comando:

$ man -L it man
$ man -L en man

Come avrete avuto modo di vedere, nel primo caso è apparsa la pagina di manuale in italiano, come se non avessimo usato opzioni, nella seconda invece è apparsa la pagina di manuale in lingua originale. In questo modo potrete almeno confrontare, anche sommariamente, che nella sezione "sintassi" non vi siano radicali differenze o nuove
opzioni che vi possano essere utili o indurre in errore nell'uso.

Ultime considerazioni

Se avete voglia di conoscere meglio le pagine di manuale o il sistema di paginazione o ancora tutto il resto, avvicinatevi direttamente alla pagine di manuale di man che tra l'altro recita:

FILE
     /etc/manpath.config
         File di configurazione di man-db.

     /usr/share/man
         Una gerarchia di pagine di manuale globale.

     /usr/share/man/index.(bt|db|dir|pag)
         Una cache della base di dati globale index tradizionale.

     /var/cache/man/index.(bt|db|dir|pag)
         Una cache della base di dati globale index  alternativa
         e  conforme con FHS.

VEDERE ANCHE
    mandb(8),  manpath(1),   manpath(5),  apropos(1),  whatis(1), 
    catman(8), less(1), nroff(1), troff(1), groff(1), zsoelim(1), 
    setlocale(3), man(7), ascii(7), latin1(7), FSSTND.

Come si puù notare, spunti per continuare a conoscere l'affascinante mondo UNIX ce ne sono...