Gentoo Logo

Guida Gentoo alle pagine Man

Indice:

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
(Output slightly modified to fit the document properly)
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.



Stampa

Aggiornato il 18 giugno 2006

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida mostra come navigare nelle pagine di manuale utilizzando man.

Chris White
Autore

Luca Marturana
Traduttore

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.