MAN

(manuale)

man(1) permette di consultare da terminale il "Manuale di programmazione UNIX". Nella prima edizione il manuale era diviso in 7 sezioni (o paragrafi o capitoli):

  • I. Commands
  • II. System calls
  • III. Subroutines
  • IV. Special files
  • V. File formats
  • VI. User-maintained programs
  • VII. Miscellaneous

FreeBSD usa invece questa suddivisione:

  • 1. User commands.
  • 2. System calls and error numbers.
  • 3. Functions in the C libraries.
  • 4. Device drivers.
  • 5. File formats.
  • 6. Games and other diversions.
  • 7. Miscellaneous information.
  • 8. System maintenance and operation commands.
  • 9. Kernel developers.

similmente per quanto riguarda le manpage di Linux:

  • 1. User commands (intro only)
  • 2. System calls
  • 3. Libc calls
  • 4. Devices (e.g., hd, sd)
  • 5. File formats and protocols (e.g., wtmp, /etc/passwd, nfs)
  • 6. Games (intro only)
  • 7. Conventions, macro packages, etc. (e.g., nroff, ascii)
  • 8. System administration (intro only)
  • 9. Kernel internal routines

Ogni sezione è ulteriormente suddivisa in varie voci, ad es. la I contiene una voce per ogni comando pensato per essere invocato direttamente dall'utente.

$ man man
(manpage di man!)
$ man mail
(mostra mail(1))
$ man printf
(printf(1))
$ man 3 printf
(printf(3))
$ man printf 3 printf
(prima printf(1) poi printf(3))
$ man LS
(errore: il nome è case-sensitive)
$ man ls
(ok)

Ogni voce viene indicata da un nome seguito dal numero di sezione a cui appartiene tra parentesi. Questo è importante perché vi sono spesso voci con lo stesso nome in sezioni diverse, ad es. comandi che permettono di utilizzare una system call con lo stesso nome del comando:

$ man chmod
(chmod(1))
$ man 2 chmod
(chmod(2) system call)
$ man -w rmdir
/usr/share/man/man1/rmdir.1.gz
(dov'é la manpage di rmdir(1)?)
$ man -w 2 rmdir
/usr/share/man/man2/rmdir.2.gz
(dov'è la manpage di rmdir(2)?)

Le manpage hanno di solito un formato comune (anche se non obbligatorio): sono divise in paragrafi. I più comuni sono:

NAME nome della voce e breve descrizione
SYNOPSIS sommario della sintassi d'uso
FILES file utilizzati dal programma
SEE ALSO manpage correlate o link ad altra documentazione
DIAGNOSTICS diagnostica prodotta dal programma
BUGS bug e mancanze del programma
STANDARDS gli standard di riferimento della voce
WARNING note e avvertimenti importanti
HISTORY nota storica
AUTHOR autore del programma e/o della manpage

Convenzioni usate nella sezione SYNOPSIS:

  • - precede un argomento flag
  • i letterali (ad es. i nomi dei comandi) vanno digitati così come sono
  • un argomento chiamato file si riferisce ad un nome di file
  • un argomento chiamato string si riferisce ad una stringa di testo
  • [ ] racchiudono un argomento opzionale
  • ... indicano la possibile ripetizione del prototipo del precedente argomento
  • | indica una scelta tra alternative esclusive

Gli argomenti tipo file o string ecc. sono spesso sottolineati o resi in inverso e i letterali in grassetto.

Segue un esempio della manpage di echo(1) di FreeBSD:

ECHO(1)                 FreeBSD General Commands Manual                ECHO(1)

NAME
     echo - write arguments to the standard output

SYNOPSIS
     echo [-n] [string ...]

DESCRIPTION
     The echo utility writes any specified operands, separated by single blank
     (` ') characters and followed by a newline (`\n') character, to the stan-
     dard output.

     The following option is available:

     -n    Do not print the trailing newline character.  This may also be
           achieved by appending `\c' to the end of the string, as is done by
           iBCS2 compatible systems.

     Some shells may provide a builtin echo command which is similar or iden-
     tical to this utility.  Consult the builtin(1) manual page.

DIAGNOSTICS
     The echo utility exits 0 on success, and >0 if an error occurs.

SEE ALSO
     builtin(1), csh(1), printf(1), sh(1)

STANDARDS
     The echo utility is expected to be IEEE Std 1003.2 (``POSIX.2'') compati-
     ble.

FreeBSD 4.5                      July 22, 1993                     FreeBSD 4.5

Versioni storiche del manuale:

1a http://cm.bell-labs.com/cm/cs/who/dmr/1stEdman.html
7a http://plan9.bell-labs.com/7thEdMan

Estensione Linux/FreeBSD: l'opzione -a mostra tutte le manpage che corrispondono al nome non solo la prima trovata come avviene di default. L'opzione -k che equivale al comando apropos(1) cerca la keyword indicata in un database contenente una breve descrizione di tutti i comandi ed è utile quando non si conosce o ricorda il nome del comando che svolge una certa funzione. whatis è come apropos ma fa match solo con parole intere.

$ man -a printf
(mostra printf(1) e printf(3))
$ man -k number | grep -i line
(quale comando numera le linee?)
addr2line(1)     - convert addresses into file names and line numbers
nl(1)            - line numbering filter
random(6)        - random lines from a file or random numbers
$ apropos fortran
(cos'é relativo al fortran?)
f77(1), g77(1) - GNU project Fortran Compiler (v0.5.24)
$ apropos whatis
apropos(1), whatis(1) - search the whatis database
makewhatis(1)            - create whatis database
makewhatis.local(8), catman.local(8) - start makewhatis or catman
for local file systems
$ whatis whatis
apropos(1), whatis(1) - search the whatis database
makewhatis(1)            - create whatis database

Il pager utilizzato da man per default è more(1), ma si può specificare un pager diverso tramite l'opzione -P o la variabile di ambiente PAGER.

<- indietro indice avanti ->