Guida Gentoo alle pagine Man
1.
Introduzione
Il programma man
Chiunque ad un certo punto della sua esperienza con linux lo ha usato. Si
tratta del comando man. Tuttavia, benché il programma man in sé appare
molto semplicistico nella sua struttura, esso possiede molte qualità extra
oltre il semplice scrolling sulla pagina. Questo documento spera di aiutare a
fare un po' di luce su queste qualità.
Struttura di Man
Le pagine di manuale sono principalmente memorizzate nella directory
/usr/share/man. Tuttavia, man legge tutte le pagine di manuale che
si trovano in una delle directory contenute nella variabile di ambiente
MANPATH. Gentoo generalmente inserisce questa variabile all'interno di
file presenti nella directory /etc/env.d. Dentro le directory
presenti nel MANPATH sono presenti alcune cartelle con una struttura del tipo
manX, dove X è il numero della sezione. Per esempio, un layout standard di man
è questo:
Codice 1.1: Struttura standard di man |
$ ls /usr/share/man | grep man
man0p
man1
man1p
man2
man3
man3p
man4
man5
man6
man7
man8
man9
mann
|
L'attuale numerazione delle sezioni sembra abbastanza standard. Tuttavia, ci
sono una cartella mann e alcune cartelle man#p. La
seguente tabella mostra cosa contengono queste directory:
| Directory di Man |
Descrizione |
| man0p |
La p sta per POSIX, come tutte le altre directory con la p nel loro
nome. Le pagine di manuale presenti in questa directory descrivono le
funzionalità di vari header POSIX.
|
| man1 |
Questa sezione riguarda i comandi standard. Molti programmi inseriscono qui
le loro pagine di man, infatti questa sezione spesso tende a diventare
molto grande.
|
| man1p |
Questa sezione descrive le versione POSIX dei comandi descritti in 1. Visto
che descrive solamente comandi base, è molto più piccola di man1.
|
| man2 |
Questa sezione descrive le chiamate di sistema Linux. |
| man3 |
Questa sezione descrive le funzioni delle librerie C standard. |
| man4 |
Questa sezione descrive i device speciali. Questi device sono solitamente
kernel oriented, ma Xorg-X11 tiene alcune sue voci pure qui.
|
| man5 |
Questa sezione descrive sia come come sono strutturati certi file sia
quali file utilizza un determinato programma. Chi legge questo documento
probabilmente avrà familiare man 5 portage il quale contiene una
descrizione della struttura dei file di portage, oppure
man 5 make.conf il quale riguarda il funzionamento di
make.conf.
|
| man6 |
In questa sezione sono contenuti i manuali dei giochi. |
| man7 |
Questa sezione descrive gli standard e altre voci miste. Questi standard
possono includere voci come i charset, i comandi SQL, gli standard ISO e
le espressioni regolari.
|
| man8 |
Questa sezione include i comandi amministrativi (solitamente eseguiti
solamente dall'utente root).
|
| man9 |
Questa sezione è molto dispersiva, ma è stata fatta per contenere la
documentazione di varie parti del kernel.
|
| mann |
Questa sezione è principalmente utilizzata da Tcl/Tk. La n
sta per new.
|
Questa non è una lista molto vasta e dettagliata, però comprende le man pages
utilizzate dalla maggior parte delle persone. Tuttavia, a volte può capitare
di non trovare la descrizione di una sezione facilmente guardando questa
tabella. Il prossimo capitolo riguarderà l'utilizzo di man per superare
questo ostacolo.
2.
Lavorare con il layout di man
Visionare il layout di man
Adesso che abbiamo capito come funziona il layout di man, possiamo cominciare
a guardare alcuni comandi. Alcune volte è necessario ridurre il campo delle
man pages per trovare quella che vogliamo. Il primo passo da fare è quello di
ordinarli per sezione. Per trovare una descrizione di una sezione, possiamo
usare man section intro in questa maniera:
Codice 2.1: Usare man intro per leggere la descrizione di una sezione |
$ man 3 intro
INTRO(3) Linux Programmer's Manual INTRO(3)
NAME
intro - Introduction to library functions
DESCRIPTION
This chapter describes all library functions excluding the library
functions described in chapter 2, which implement system calls.
There are various function groups which can be identified by a
letter which is appended to the chapter number:
....
|
Sfortunatamente, questo non funziona sempre! Tuttavia, per fortuna c'è
un'altra via per cercare una pagina, che può ritornare diversi risultati
(come ad esempio una chiamata ad una libreria e un comando di sistema che
hanno lo stesso nome). Per fare ciò, usiamo il parametro -K per man in
questo modo:
Codice 2.2: Usare man -K per cercare una stringa |
$ man -K sleep
/usr/share/man/man0p/time.h.0p.gz? [ynq] n
/usr/share/man/man0p/unistd.h.0p.gz? [ynq] n
/usr/share/man/man2/alarm.2.gz? [ynq] n
/usr/share/man/man2/pause.2.gz? [ynq] n
/usr/share/man/man2/futex.2.gz? [ynq] n
/usr/share/man/man2/nanosleep.2.gz? [ynq] y
/usr/share/man/man2/semop.2.gz? [ynq] q
|
A volte l'output può essere troppo lungo. In questo caso potrebbe essere
meglio specificare più keyword. Ora sappiamo come trovare le man pages, la
prossima sezione spiegherà come vedere queste pagine di manuale.
Vedere le man pages
Per vedere le pagine di manuale possono essere seguite due vie, la prima è
quella di lanciare man [man page name]. La seconda è invece man
[section] [man page name]. Proviamo a vedere bc per esempio.
Possiamo vedere la prima pagina di manuale che viene fuori con bc
(dovrebbe essere la sezione 1, perchè è la prima sezione disponibile che
contiene una pagina di manuale con nome bc):
Codice 2.3: Vedere la pagina di manuale predefinita |
$ man bc
bc(1) bc(1)
NAME
bc - An arbitrary precision calculator language
...
|
E se volessimo la versione POSIX? Possiamo usare la seconda maniera:
Codice 2.4: Vedere una specifica man page di una sezione |
$ man 1p bc
BC(P) POSIX Programmer's Manual BC(P)
NAME
bc - arbitrary-precision arithmetic language
...
|
Ed ecco che la man page è mostrata. Adesso che abbiamo la pagina di manuale,
è tempo di lavorarci su. La prossima sezione riguarderà la navigazione e la
ricerca all'interno della pagina.
Navigazione e ricerca all'interno della pagina
La navigazione è abbastanza semplice. Per muoverci su e giù riga per riga,
usiamo le freccie su e giù. Per muoversi pagina per pagina, si usano i tasti
pag su e pag giù. Queste istruzioni però sono valide se si usa il pager
predefinito, less. Less ha pure altri comandi per la navigazione, ma le
frecce solitamente riescono a sopperire:
Codice 2.5: Scorciatoie di less addizionali |
e ^E j ^N CR * Forward one line (or N lines).
y ^Y k ^K ^P * Backward one line (or N lines).
f ^F ^V SPACE * Forward one window (or N lines).
b ^B ESC-v * Backward one window (or N lines).
z * Forward one window (and set window to N).
w * Backward one window (and set window to N).
ESC-SPACE * Forward one window, but don't stop at end-of-file.
d ^D * Forward one half-window (and set half-window to N).
u ^U * Backward one half-window (and set half-window to N).
ESC-) RightArrow * Left one half screen width (or N positions).
ESC-( LeftArrow * Right one half screen width (or N positions).
F Forward forever; like "tail -f".
|
Ricercare è sicuramente più interessante. I due metodi di ricerca più comuni
sono /pattern e ?pattern. Il primo cerca in avanti, il secondo
cerca indietro. pattern è una espressione regolare del tipo descritto
in man 7 regex. Facciamo una ricerca di esempio per l'opzione
-D di emerge. Per prima cosa, chiamiamo la pagina di emerge:
Codice 2.6: Richiamare la man page di emerge |
$ man emerge
|
Adesso, nella schermata, basta premere il tasto / per richiamare il
prompt di ricerca e inserire il nostro pattern:
Codice 2.7: Richiamare il prompt di ricerca |
gracefully handles updating installed packages to newer releases as well.
It handles both source and binary packages, and it can be used to create
binary packages for distribution.
EBUILDS, TBZ2S, CLASSES AND DEPENDENCIES
/\-D
|
Nota:
È stato anteposto il carattere di escape \ a - poiché in questo
caso non deve essere considerato come carattere speciale di un'espressione
regolare.
|
Ciò ricercherà la stringa nella pagina e evidenzierà le parole cercate per
poterle distinguere:
Codice 2.8: Risultati ricerca |
--deep (-D)
When used in conjunction with --update, this flag forces emerge to consider the entire
dependency tree of packages, instead of checking only the immediate dependencies of
the packages. As an example, this catches updates in libraries that are not directly
listed in the dependencies of a package.
|
Se si trova un risultato non voluto e si vuole continuare la ricerca dello
stesso pattern, basta semplicemente premere di nuovo il carattere /
seguito da invio, non specificando quindi alcun pattern. In questo modo man
cercherà il pattern usato in precedenza. Ci sono però alcune pagine di man,
dove le opzioni vengono prima elencate e poi spiegate in seguito. Per esempio
diamo un'occhiata a man 5 portage. Essa prima elenca i file utilizzati e
poi ne spiega il loro utilizzo. Ricercando in avanti più volte si può arrivare
al risultato, ma c'è una via più breve, ovvero la ricerca all'indietro.
Proviamo ad usarla per trovare la descrizione di package.unmask.
Per prima cosa lanciamo man 5 portage:
Codice 2.9: Richiamare il man di portage |
$ man 5 portage
|
Adesso premiamo SHIFT+g. In questo modo il puntatore si sposterà alla
fine della pagina:
Codice 2.10: Fine della pagina dopo SHIFT+g |
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
lines 418-442/442 (END)
|
Ora inseriamo il pattern da cercare con la sintassi ?pattern, la quale
ci farà eseguire una ricerca all'indietro. Quindi prima premiamo ? per
richiamare il prompt e poi inseriamo package.unmask:
Codice 2.11: Specificare il pattern di ricerca |
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
?package.unmask
|
Adesso premiamo invio per mostrare il risultato:
Codice 2.12: Risultato della ricerca |
package.unmask
Just like package.mask above, except here you list packages you want to unmask.
Useful for overriding the global package.mask file (see below). Note that
this does not override packages that are masked via KEYWORDS.
...
|
La ricerca è completata! Tenete presente che come per /, usando
? senza alcun pattern, esso andrà ad usare l'ultimo pattern
utilizzato.
Conclusione
Con ciò si conclude la guida al man. Spero di aver fatto un po' di luce sulla
navigazione nelle pagine di manuale e di aver dato un po' di tip utili per
gli utenti più esperti. Chi preferisce altri metodi per visionare le man
pages, può utilizzare i seguenti programmi alternativi:
-
app-text/man2html - un programma per convertire le pagine di manuale in html
- app-text/tkman - un browser per le man pages basato su tk
Inoltre il browser web di KDE (Konqueror), permette di visionare
le pagine di manuale utilizzando la sintassi man: nella barra degli
indirizzi.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|