¿Qué significan los números en una página de manual?

474

Entonces, por ejemplo, cuando escribo man lsveo LS(1). Pero si escribo man apachectlveo APACHECTL(8)y si escribo man cdtermino con cd(n).

Me pregunto cuál es el significado de los números entre paréntesis, si es que tienen alguno.

Wilduck
fuente
44
@PeterMortensen Es por eso que SuperUser y Unix / Linux y ServerFault y AskUbuntu y Apple deben fusionarse.
Chloe
En una nota al margen, puede establecer su propio orden de búsqueda conexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh
Esta es una gigantesca falla de UX. La documentación digital no debería tener números de sección; debe tener nombres descriptivos e hipervínculos. No puedo creer que lograron hacer una documentación tan confusa que esta pregunta se haya visto 121000 veces.
iono

Respuestas:

497

El número corresponde a qué sección del manual proviene esa página; 1 es comandos de usuario, mientras que 8 es material de administrador de sistemas. La página man para man ( man man) lo explica y enumera los estándares:

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.

Hay ciertos términos que tienen diferentes páginas en diferentes secciones (por ejemplo, printfcomo aparece un comando en la sección 1, como stdlibaparece una función en la sección 3); en casos como ese, puede pasar el número de sección manantes del nombre de la página para elegir cuál desea, o usar man -apara mostrar cada página coincidente en una fila:

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

Puede saber en qué secciones se encuentra un término man -k(equivalente al aproposcomando). También hará coincidencias de subcadenas (por ejemplo, se mostrará sprintfsi ejecuta man -k printf), por lo que debe usar ^termpara 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)
Michael Mrozek
fuente
55
Eso ciertamente lo explica. ¿Hay alguna manera fácil de saber si hay varias páginas de manual para un comando dado?
Wilduck
2
@Wil Sí, editado
Michael Mrozek
11
Tenga en cuenta que estos números de sección son para Linux. 1, 3 y 6 son iguales en todas las variantes de Unix AFAIK, pero las otras y las secciones de un solo dígito pueden diferir. Generalmente man X introdescribe lo que hay en la sección X.
Gilles
2
@KeithB: He usado algunos unices con diferentes 4,5,7,8. Digital Unix (OSF1) tenía, y Solaris todavía tiene: formatos de archivo en 4, misceláneos en 5, dispositivos en 7. Solaris también pone comandos de administrador en 1m. Creo que las llamadas al sistema en 2 son universales, pero algunos sistemas también tienen algunas interfaces de biblioteca C en 2 (cuando se supone que son envoltorios delgados alrededor de la llamada del sistema epónima).
Gilles
44
Huh, quién pensó que necesitarías un manual para usar un manual ... Nunca he ejecutado man man... hasta ahora.
Matt Clark
59

La historia de estos números de sección se remonta al Manual del Programador Unix original de Thompson y Ritchie en 1971.

Las secciones originales fueron

  1. Comandos
  2. Sistema de llamadas
  3. Subrutinas
  4. Archivos especiales
  5. Formatos de archivo
  6. Programas mantenidos por el usuario
  7. Diverso
KeithB
fuente
Más cosas de los años 70, de hecho. Pensé que era de los años 80.
Rolf
"Varios" significa principalmente "información amplia sobre un subsistema completo o una característica genérica de Unix en lugar de un punto final de API en particular". Véase, por ejemplo pipe(7), tcp(7)(y varias otras páginas del manual de red), pthreads(7), boot(7), regex(7), etc. Hay otras cosas en la sección 7, así como ascii(7)(tabla ASCII) y man(7)(cómo escribir una página del manual), pero las amplias docs páginas son, con mucho, Las cosas más útiles en la sección 7 en mi experiencia.
Kevin
31

Konqueror también describe secciones no estándar: (gracias a @ greg0ire por la 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
Babken Vardanyan
fuente
21

Lo que significa que es ya se ha descrito, pero también quiere añadir que cada sección tiene página del manual especial con la introducción: intro. Por ejemplo, vea man 1 introo man 3 introy así sucesivamente.

php-codificador
fuente
1
No veo esto en mi instalación de Fedora. ¿La introducción de man X no es estándar?
beatgammit 01 de
@tjameson ¿Tiene el man-pagespaquete instalado?
php-coder
15

Desde la página del manmanual:

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]

En cuanto a por qué están separados así, hay cierta superposición. Ciertas páginas de manual existen en más de una sección, dependiendo de lo que quiera decir.

Por ejemplo, compárelo man crontabcon man 5 crontab: es probable que este último sea el que desea buscar.

Shadur
fuente
¿Y qué son man1py man3p?
Tyilo
¿Y dónde debo colocar mis propias páginas de manual ubicadas ~/man?
Tyilo
Sabía que había diferentes números, pero no sabía que había una rima. Gracias
user606723
1
1p es la versión estándar posix del manual. Si desea escribir código portátil, debe usar solo páginas de manual de Xp. Si su implementación no es compatible con posix, las páginas de manual de X y Xp pueden diferir.
andcoz
@Tyilo mira mi respuesta
Babken Vardanyan
8

Estos son los números de sección. Simplemente escriba man mano abra konqueror y escriba man: // man y verá cuáles son estas secciones.

greg0ire
fuente
7

A menudo, se hace referencia a una página de manual mediante el sufijo con la sección entre paréntesis, por ejemplo:

read(2)

Este estilo tiene dos ventajas principales:

  • está claro de inmediato que hace referencia a una página de manual, es decir, puede escribir algo como 'cf. leer (3) 'en lugar de' cf. la sección 3 de la página man de read '
  • Si varias secciones contienen páginas de manual con el mismo nombre, la especificación de la sección es más precisa

Las páginas man están organizadas en secciones, por ejemplo, la Sección 1 incluye todas las páginas man de comandos de usuario, la Sección 2 todas las páginas man para las llamadas al sistema, la Sección 3 es para funciones de biblioteca, etc.

En la línea de comando, si no especifica explícitamente la sección, obtendrá la primera página de manual coincidente, en el orden transversal de la sección predeterminada, por ejemplo:

$ man read

se muestra BASH_BUILTINS(1)en Fedora. Dónde

$ man 2 read

muestra la página del manual para la read()llamada al sistema.

Tenga en cuenta que la especificación posicional de la sección no es portátil; por ejemplo, en Solaris la especificaría así:

$ man -s 2 read

Por lo general, man mantambién enumera algunas de las secciones disponibles. Pero no necesariamente todos. Para enumerar todas las secciones disponibles, se pueden enumerar los subdirectorios de todos los directorios enumerados en la ruta de acceso predeterminada o la variable de entorno $MANPATH. Por ejemplo, en un sistema Fedora 23 con algunos paquetes de desarrollo instalados, /usr/share/mantiene los siguientes subdirectorios:

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

Los directorios con el manprefijo representan cada sección, mientras que los otros contienen secciones traducidas. Por lo tanto, para obtener una lista de secciones no vacías, se podría emitir un comando como este:

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

(las secciones que terminan en pson páginas de manual POSIX)

Para ver una página de manual en otro idioma (si está disponible), se puede establecer una variable de entorno relacionada con el idioma, por ejemplo:

$ LC_MESSAGES=de_DE man read

Además, cada sección debe tener una página de manual de introducción denominada intro, por ejemplo, visible a través de:

$ man 2 intro
maxschlepzig
fuente
4

Las definiciones para SVr4 son:

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

Esta es la numeración real de un UNIX "genético". POSIX no define números.

astuto
fuente