Por exemplo, quando digito man ls
, Vejo LS(1)
. Mas se eu digitar man apachectl
, Vejo APACHECTL(8)
e se eu digitar man cd
, Terminarei com cd(n)
.
Gostaria de saber qual é o significado dos números entre parênteses, se houver algum.
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 homem (man man
) explica e lista os padrões:
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, printf
como um comando aparece na seção 1, como uma função stdlib
aparece na seção 3); em casos como esse, você pode passar o número da seção para man
antes do nome da página para escolher qual você deseja ou usar man -a
para mostrar todas as páginas correspondentes em uma linha:
$ man 1 printf
$ man 3 printf
$ man -a printf
Você pode dizer em que seções um termo se enquadra com man -k
(equivalente ao comando apropos
). Também fará correspondências de substring (por exemplo, mostrará sprintf
se você executar man -k printf
), então você precisa usar ^term
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)
A história desses números de seção remonta ao original nix Programmer's Manual de Thompson e Ritchie em 1971.
As seções originais foram
o konqueror também descreve seções não-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
O que significa significa já descrito, mas também quero acrescentar que cada seção tem uma página de manual especial com introdução: intro
. Por exemplo, consulte man 1 intro
ou man 3 intro
e assim por diante.
Na página de manual 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]
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 crontab
com man 5 crontab
- é provável que o último seja o que você pretendia procurar.
Estes são números de seção. Basta digitar man man
ou abra o konqueror e digite man: // man e você verá o que são essas seções.
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:
As páginas de manual são organizadas em seções, por exemplo A Seção 1 inclui todas as páginas de manual do comando do usuário, a Seção 2 todas as páginas de 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
exibe BASH_BUILTINS(1)
no Fedora. Onde
$ man 2 read
exibe a página de manual da chamada do sistema read()
.
Observe que a especificação posicional da seção não é portátil - por exemplo no Solaris, você o especificaria assim:
$ man -s 2 read
Normalmente, man man
També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
Tem 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 prefixo man
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 '[email protected]^.*/man\(..*\)/.*[email protected]\[email protected]' \
| sort -u | column
0p 1p 3 4 6 8
1 2 3p 5 7
(as seções que terminam com p
sã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 chamada intro
, por exemplo visível através de:
$ man 2 intro
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.