Que signifient les chiffres dans une page de manuel?

474

Ainsi, par exemple, lorsque je tape, man lsje vois LS(1). Mais si je tape, man apachectlje vois APACHECTL(8)et si je tape, man cdje me retrouve avec cd(n).

Je me demande quelle est la signification des chiffres entre parenthèses, s’ils en ont.

Wilduck
la source
4
@PeterMortensen C'est pourquoi SuperUser et Unix / Linux et ServerFault et AskUbuntu et Apple doivent tous être fusionnés.
Chloé
Sur une note de côté, vous pouvez définir votre propre ordre de recherche avecexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh
C'est un échec UX gigantesque. La documentation numérique ne devrait pas avoir de numéro de section; il devrait avoir des noms descriptifs et des hyperliens. Je ne peux pas croire qu'ils aient réussi à créer une documentation tellement confuse que cette question a été vue 121 000 fois.
iono

Réponses:

497

Le numéro correspond à quelle section du manuel de cette page provient; 1 correspond aux commandes utilisateur, tandis que 8 correspond aux commandes sysadmin. La page de manuel de man elle-même ( man man) l'explique et répertorie les versions 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.

Certains termes ont différentes pages dans différentes sections (par exemple printf, une commande apparaît dans la section 1, une stdlibfonction apparaît dans la section 3); Dans ce cas, vous pouvez indiquer le numéro de section manavant le nom de la page pour choisir celui que vous souhaitez ou utiliser man -apour afficher chaque page correspondante dans une ligne:

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

Vous pouvez savoir à quelles sections correspond un terme man -k(équivalent à la aproposcommande). Il fera aussi des correspondances de sous-chaîne (par exemple, il montrera sprintfsi vous courez man -k printf), vous devez donc utiliser ^termpour le limiter:

$ 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)
Michael Mrozek
la source
5
Cela l'explique certainement. Existe-t-il un moyen facile de déterminer s’il existe ou non plusieurs pages de manuel pour une commande donnée?
Wilduck
2
@Wil Yes, édité
Michael Mrozek
11
Notez que ces numéros de section sont pour Linux. 1, 3 et 6 sont identiques dans toutes les variantes unix AFAIK, mais les autres sections et les sections à chiffres non uniques peuvent différer. man X introDécrit habituellement ce qui est dans la section X.
Gilles
2
@ KeithB: J'ai utilisé des unités avec différents 4,5,7,8. Digital Unix (OSF1) possédait encore Solaris: formats de fichiers dans 4, divers dans 5, périphériques dans 7. Solaris place également les commandes d’administrateur dans un mètre. Je pense que les appels système dans 2 sont universels, mais certains systèmes ont aussi des interfaces de bibliothèque C dans 2 (quand ils sont supposés être des enveloppeurs minces autour du syscall éponyme).
Gilles
4
Euh, qui a pensé que vous auriez besoin d'un manuel pour utiliser un manuel ... Je n'ai jamais exécuté man man... jusqu'à maintenant.
Matt Clark
59

L’historique de ces numéros de section remonte au manuel original du programmeur Unix de Thompson et Ritchie en 1971.

Les sections originales étaient

  1. Les commandes
  2. Appels système
  3. Sous-routines
  4. Dossiers spéciaux
  5. Formats de fichiers
  6. Programmes maintenus par l'utilisateur
  7. Divers
KeithB
la source
Plus de choses des années 70, en effet. Je pensais que c'était à partir des années 80.
Rolf
"Divers" signifie principalement "des informations générales sur un sous-système entier ou une fonctionnalité Unix générique plutôt que sur un noeud final d'API particulier". Voir , par exemple pipe(7), tcp(7)(et plusieurs autres pages de manuel de mise en réseau), pthreads(7), boot(7), regex(7), etc. Il y a d' autres choses à l' article 7, ainsi, par exemple ascii(7)(table ASCII) et man(7)(comment écrire une page de manuel) , mais les pages larges docs sont de loin les choses les plus utiles dans la section 7 de mon expérience.
Kevin
31

konqueror décrit également les sections non standard: (merci à @ greg0ire pour l’idée)

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
Babken Vardanyan
la source
21

Ce qu'il est déjà décrit signifie, mais je souhaite aussi ajouter que chaque section a la page de manuel spécial avec l' introduction: intro. Par exemple, voir man 1 introou man 3 introet ainsi de suite.

php-codeur
la source
1
Je ne vois pas cela sur mon installation de Fedora. Man X intro n'est pas standard?
beatgammit
@tjameson Avez-vous un man-pagespaquet installé?
php-coder
15

De la manpage de manuel:

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]

Pourquoi sont-ils séparés comme ça - il y a un certain chevauchement. Certaines pages de manuel existent dans plus d'une section, en fonction de ce que vous voulez dire.

Par exemple, comparez man crontabavec man 5 crontab- il y a de fortes chances que ce dernier soit celui que vous souhaitiez rechercher.

Shadur
la source
Et que sont man1pet man3p?
Tyilo
Et où devrais-je placer mes propres pages de manuel situées dans ~/man?
Tyilo
Je savais qu'il y avait différents chiffres, mais je ne savais pas qu'il y avait une comptine. Merci
user606723
1
1p est la version standard posix du manuel. Si vous voulez écrire du code portable, utilisez uniquement les pages de manuel Xp. Si votre implémentation n'est pas conforme au posix, les pages de manuel X et Xp peuvent différer.
andcoz
@Tyilo voir ma réponse
Babken Vardanyan
8

Ce sont des numéros de section. Tapez man manou ouvrez konqueror et tapez man: // man et vous verrez quelles sont ces sections.

greg0ire
la source
7

Souvent, une page de manuel est référencée en y ajoutant la section entre parenthèses, par exemple:

read(2)

Ce style a deux avantages principaux:

  • il est immédiatement évident que vous référencez une page de manuel - c’est-à-dire que vous pouvez écrire quelque chose comme 'cf. read (3) 'au lieu de' cf. la section 3 de la page de manuel de read '
  • si plusieurs sections contiennent des pages de manuel portant le même nom, la spécification de la section est plus précise

Les pages de manuel sont organisées en sections. Par exemple, la section 1 comprend toutes les pages de manuel des commandes de l'utilisateur, la section 2, toutes les pages de manuel des appels système, la section 3, les fonctions de la bibliothèque, etc.

Sur la ligne de commande, si vous ne spécifiez pas explicitement la section, vous obtenez la première page de manuel correspondante, dans l'ordre de traversée de section par défaut, par exemple:

$ man read

affiche BASH_BUILTINS(1)sur Fedora. Où

$ man 2 read

affiche la page de manuel de l' read()appel système.

Notez que la spécification de position de la section n’est pas portable. Par exemple, sous Solaris, vous devez le spécifier comme suit:

$ man -s 2 read

Généralement, man manrépertorie également certaines des sections disponibles. Mais pas nécessairement tous. Pour répertorier toutes les sections disponibles, il est possible de répertorier les sous-répertoires de tous les répertoires répertoriés dans le chemin d'accès par défaut ou la variable d'environnement $MANPATH. Par exemple, sur un système Fedora 23 avec certains packages de développement installés, /usr/share/manles sous-répertoires suivants sont disponibles:

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

Les répertoires avec le manpréfixe représentent chaque section, tandis que les autres contiennent des sections traduites. Ainsi, pour obtenir une liste de sections non vides, on peut lancer une commande comme celle-ci:

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

(les sections se terminant par psont des pages de manuel POSIX)

Pour afficher une page de manuel dans une autre langue (si disponible), vous pouvez définir une variable d’environnement liée à la langue, par exemple:

$ LC_MESSAGES=de_DE man read

De plus, chaque section doit avoir une page de manuel d’introduction nommée intro, par exemple, consultable via:

$ man 2 intro
maxschlepzig
la source
4

Les définitions pour SVr4 sont:

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

C’est la numérotation réelle d’un UNIX «génétique». POSIX ne définit pas de nombres.

schily
la source