it-swarm.it

Cosa significano i numeri in una pagina man?

Ad esempio, quando digito man ls Vedo LS(1). Ma se scrivo man apachectl Vedo APACHECTL(8) e se scrivo man cd Finisco con cd(n).

Mi chiedo quale sia il significato dei numeri tra parentesi, se ne hanno.

514
Wilduck

Il numero corrisponde alla sezione del manuale da cui proviene la pagina; 1 è comandi utente, mentre 8 è roba da amministratore di sistema. La pagina man per man stesso (man man) lo spiega ed elenca quelli standard:

MANUAL SECTIONS
    The standard sections of the manual include:

    1      User Commands
    2      System Calls
    3      C Library Functions
    4      Devices and Special Files
    5      File Formats and Conventions
    6      Games et. al.
    7      Miscellanea
    8      System Administration tools and Daemons

    Distributions customize the manual section to their specifics,
    which often include additional sections.

Ci sono alcuni termini che hanno pagine diverse in sezioni diverse (ad esempio printf come un comando appare nella sezione 1, come una funzione stdlib appare nella sezione 3); in casi del genere puoi passare il numero di sezione a man prima del nome della pagina per scegliere quale vuoi, oppure usare man -a per mostrare ogni pagina corrispondente in una riga:

$ man 1 printf
$ man 3 printf
$ man -a printf

Puoi dire in quali sezioni rientra un termine con man -k (equivalente al comando apropos). Farà anche corrispondenze alla sottostringa (ad es. Mostrerà sprintf se esegui man -k printf), quindi devi utilizzare ^term per limitarlo:

$ man -k '^printf'
printf               (1)  - format and print data
printf               (1p)  - write formatted output
printf               (3)  - formatted output conversion
printf               (3p)  - print formatted output
printf [builtins]    (1)  - bash built-in commands, see bash(1)
524
Michael Mrozek

La storia di questi numeri di sezione risale all'originale Manuale del programmatore Unix di Thompson e Ritchie nel 1971.

Le sezioni originali erano

  1. Comandi
  2. Chiamate di sistema
  3. Le subroutine
  4. File speciali
  5. Formati di file
  6. Programmi gestiti dall'utente
  7. Miscellaneo
59
KeithB

konqueror descrive anche sezioni non standard: (grazie a @ greg0ire per l'idea)

0     Header files
0p    Header files (POSIX)
1     Executable programs or Shell commands
1p    Executable programs or Shell commands (POSIX)
2     System calls (functions provided by the kernel)
3     Library calls (functions within program libraries)
3n    Network Functions
3p    Perl Modules
4     Special files (usually found in /dev)
5     File formats and conventions eg /etc/passwd
6     Games
7     Miscellaneous  (including  macro  packages and conventions), e.g. man(7), groff(7)
8     System administration commands (usually only for root)
9     Kernel routines
l     Local documentation
n     New manpages
34
Babken Vardanyan

Cosa significa già descritto, ma voglio anche aggiungere che ogni sezione ha una pagina di manuale speciale con introduzione: intro. Ad esempio, vedi man 1 intro o man 3 intro e così via.

21
php-coder

Dalla manpage man:

The table below shows the section numbers of the manual followed by the 
types of pages they contain.

   1   Executable programs or Shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages and conven‐
       tions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

Quanto al perché sono separati così - c'è qualche sovrapposizione. Alcune manpage esistono in più di una sezione a seconda di cosa intendi.

Ad esempio, confronta man crontab con man 5 crontab - è probabile che quest'ultimo sia quello che volevi cercare.

16
Shadur

Questi sono numeri di sezione. Digita man man oppure apri konqueror e digita man: // man e vedrai quali sono queste sezioni.

8
greg0ire

Spesso si fa riferimento a una pagina man tramite il suffisso con la sezione racchiusa tra parentesi, ad es .:

read(2)

Questo stile ha due vantaggi principali:

  • è immediatamente chiaro che si fa riferimento a una pagina man, ovvero è possibile scrivere qualcosa come 'cf. leggi (3) "anziché" cfr. la pagina man della sezione 3 di lettura '
  • se più sezioni contengono pagine man con lo stesso nome, specificare la sezione è più preciso

Le pagine man sono organizzate in sezioni, ad es. La sezione 1 include tutte le pagine man dei comandi utente, la sezione 2 tutte le pagine man per le chiamate di sistema, la sezione 3 è per le funzioni della libreria ecc.

Nella riga di comando, se non si specifica esplicitamente la sezione, si ottiene la prima pagina man corrispondente, nell'ordine di attraversamento della sezione predefinita, ad es .:

$ man read

visualizza BASH_BUILTINS(1) su Fedora. Dove

$ man 2 read

visualizza la pagina man per la chiamata di sistema read().

Si noti che le specifiche di posizione della sezione non sono portatili - ad es. su Solaris lo si specifica in questo modo:

$ man -s 2 read

Di solito, man man Elenca anche alcune delle sezioni disponibili. Ma non necessariamente tutto. Per elencare tutte le sezioni disponibili è possibile elencare le sottodirectory di tutte le directory elencate nel percorso man predefinito o nella variabile di ambiente $MANPATH. Ad esempio su un sistema Fedora 23 con alcuni pacchetti di sviluppo installati /usr/share/man Ha le seguenti sottodirectory:

cs  es  id  man0p  man2   man3x  man5x  man7x  man9x  pt_BR  sk  zh_CN
da  fr  it  man1   man2x  man4   man6   man8   mann   pt_PT  sv  zh_TW
de  hr  ja  man1p  man3   man4x  man6x  man8x  pl     ro     tr
en  hu  ko  man1x  man3p  man5   man7   man9   pt     ru     zh

Le directory con il prefisso man rappresentano ciascuna sezione, mentre le altre contengono sezioni tradotte. Pertanto, per ottenere un elenco di sezioni non vuote è possibile emettere un comando come questo:

$ find /usr/share/man -type f  | sed '[email protected]^.*/man\(..*\)/.*[email protected]\[email protected]' \
    | sort -u | column
0p  1p  3   4   6   8
1   2   3p  5   7

(le sezioni che terminano con p sono pagine man POSIX)

Per visualizzare una pagina man in un'altra lingua (se disponibile) è possibile impostare una variabile d'ambiente relativa alla lingua, ad es .:

$ LC_MESSAGES=de_DE man read

Inoltre, ogni sezione dovrebbe avere una pagina man introduttiva chiamata intro, ad es. visualizzabile tramite:

$ man 2 intro
7
maxschlepzig

Le definizioni per SVr4 sono:

1 User Commands
2 System Calls
3 library Functions
4 File Formats
5 Standards, Environment and Macros (e.g. man(5))
6 Games and Demos
7 Device and Network Interfaces, Special Files
8 Maintenance Procedures
9 Kernel and Driver entry points and structures

Questa è la numerazione effettiva per un UNIX "genetico". POSIX non definisce i numeri.

4
schily