O que significam os números em uma página de manual?


474

Então, por exemplo, quando eu digito man ls, vejo LS(1). Mas se eu digitar man apachectl, vejo APACHECTL(8)e se digitar man cd, terminarei com cd(n).

Gostaria de saber qual é o significado dos números entre parênteses, se houver algum.




4
@PeterMortensen É por isso que SuperUser e Unix / Linux e ServerFault e AskUbuntu e Apple precisam ser mesclados.
Chloe

Em uma nota lateral, você pode definir sua própria ordem de pesquisa comexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh

Esta é uma falha gigantesca de UX. A documentação digital não deve ter números de seção; deve ter nomes descritivos e hiperlinks. Não acredito que eles conseguiram tornar a documentação tão confusa que essa pergunta foi vista 121000 vezes.
iono 10/09

Respostas:


497

O número corresponde a qual seção do manual é a página; 1 são comandos do usuário, enquanto 8 são coisas do sysadmin. A página de manual do próprio man ( man man) explica e lista as páginas padrão:

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.

Existem certos termos que têm páginas diferentes em seções diferentes (por exemplo, printfcomo um comando aparece na seção 1, como uma stdlibfunção aparece na seção 3); em casos como esse, você pode passar o número da seção manantes do nome da página para escolher qual você deseja ou usar man -apara mostrar todas as páginas correspondentes em uma linha:

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

Você pode dizer em quais seções um termo se enquadra man -k(equivalente ao aproposcomando). Ele também fará correspondências de substring (por exemplo, será exibido sprintfse você executar man -k printf), portanto, você precisa usá ^term-lo para limitar:

$ 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)

5
Isso certamente explica isso. Existe uma maneira fácil de saber se existem ou não várias páginas de manual para um determinado comando?
Wilduck 28/10/10

2
@Wil Sim, editado
Michael Mrozek

11
Observe que esses números de seção são para Linux. 1, 3 e 6 são os mesmos em todas as variantes unix AFAIK, mas as outras seções e os dígitos não únicos podem diferir. Geralmente man X introdescreve o que está na seção X.
Gilles

2
@KeithB: Eu usei alguns departamentos com diferentes 4,5,7,8. O Digital Unix (OSF1) tinha e o Solaris ainda possui: formatos de arquivo em 4, diversos em 5, dispositivos em 7. O Solaris também coloca comandos de administrador em 1m. Eu acho que as chamadas de sistema em 2 são universais, mas alguns sistemas também têm interfaces de biblioteca C em 2 (quando deveriam ser invólucros finos em torno do syscall de mesmo nome).
Gilles

4
Ah, quem achou que você precisaria de um manual para usá-lo ... Nunca executei man man... até agora.
Matt Clark

59

A história desses números de seção remonta ao Manual do Programador Unix original de Thompson e Ritchie em 1971.

As seções originais foram

  1. Comandos
  2. Chamadas do sistema
  3. Sub-rotinas
  4. Arquivos especiais
  5. Formatos de arquivo
  6. Programas mantidos pelo usuário
  7. Diversos

Mais coisas dos anos 70, de fato. Eu pensei que era dos anos 80.
Rolf

"Diversos" significa principalmente "informações amplas sobre um subsistema inteiro ou um recurso genérico do Unix, em vez de um ponto de extremidade de API específico". Ver, por exemplo pipe(7), tcp(7)(e várias outras páginas de manual de rede), pthreads(7), boot(7), regex(7), etc. Há outras coisas no capítulo 7, bem como, tais como ascii(7)(tabela ASCII) e man(7)(como escrever uma página de homem), mas as grandes docs páginas são, de longe as coisas mais úteis na seção 7 da minha experiência.
Kevin

31

O konqueror também descreve seções fora do padrão: (obrigado a @ greg0ire pela idéia)

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

21

O que é significa já descrito, mas também quer acrescentar que cada seção tem página de manual especial com introdução: intro. Por exemplo, veja man 1 introou man 3 introassim por diante.


1
Não vejo isso na minha instalação do Fedora. A introdução do homem X não é padrão?
Beatgammit 01/07

@tjameson Você tem o man-pagespacote instalado?
Php-coder

15

Na página de 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]

Por que eles estão separados assim - há alguma sobreposição. Certas páginas de manual existem em mais de uma seção, dependendo do que você quer dizer.

Por exemplo, compare man crontabcom man 5 crontab- as chances são de que este último você pretenda procurar.


E o que são man1pe man3p?
Tyilo

E onde devo colocar minhas próprias páginas de manual ~/man?
Tyilo

Eu sabia que havia números diferentes, mas não sabia que havia uma rima. Graças
user606723

1
1p é a versão padrão posix do manual. Se você deseja escrever código portátil, use apenas as páginas de manual do Xp. Se sua implementação não for compatível com posix, as páginas de manual X e Xp podem diferir.
andcoz

@Tyilo see my answer
Babken Vardanyan /

8

Estes são números de seção. Basta digitar man manou abrir o konqueror e digitar man: // man e você verá o que são essas seções.


7

Freqüentemente, uma página de manual é referenciada através do sufixo da seção entre parênteses, por exemplo:

read(2)

Esse estilo tem duas vantagens principais:

  • fica imediatamente claro que você faz referência a uma página de manual - ou seja, pode escrever algo como 'cf. leia (3) 'em vez de' cf. a página de manual da seção 3 de leitura '
  • se várias seções contiverem páginas de manual com o mesmo nome, especificar a seção é mais preciso

As páginas do manual estão organizadas em seções, por exemplo, a Seção 1 inclui todas as páginas do comando de usuário, a Seção 2 todas as páginas do manual para as chamadas do sistema, a Seção 3 é para funções da biblioteca etc.

Na linha de comando, se você não especificar explicitamente a seção, você obtém a primeira página do manual correspondente, na ordem transversal da seção padrão, por exemplo:

$ man read

é exibido BASH_BUILTINS(1)no Fedora. Onde

$ man 2 read

exibe a página de manual da read()chamada do sistema.

Observe que a especificação posicional da seção não é portátil - por exemplo, no Solaris, você a especificaria assim:

$ man -s 2 read

Geralmente, man mantambém lista algumas das seções disponíveis. Mas não necessariamente todos. Para listar todas as seções disponíveis, pode-se listar os subdiretórios de todos os diretórios listados no caminho man padrão ou na variável de ambiente $MANPATH. Por exemplo, em um sistema Fedora 23 com alguns pacotes de desenvolvimento instalados /usr/share/man, existem os seguintes subdiretórios:

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

Os diretórios com o manprefixo representam cada seção - enquanto os outros contêm seções traduzidas. Assim, para obter uma lista de seções não vazias, pode-se emitir um 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

(as seções que terminam com psão páginas de manual do POSIX)

Para visualizar uma página de manual em outro idioma (se disponível), é possível definir uma variável de ambiente relacionada ao idioma, por exemplo:

$ LC_MESSAGES=de_DE man read

Além disso, cada seção deve ter uma página de manual de introdução denominada intro, por exemplo, visível através de:

$ man 2 intro

4

As definições para SVr4 são:

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

Essa é a numeração real de um UNIX "genético". O POSIX não define números.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.