Что означают цифры в справочной странице?

474

Так, например, когда я печатаю, man lsя вижу LS(1). Но если я печатаю, man apachectlя вижу, APACHECTL(8)и если я печатаю, man cdя в конечном итоге cd(n).

Мне интересно, каково значение чисел в скобках, если они есть.

Wilduck
источник
3
stackoverflow.com/questions/62936/…
Пол Томблин
4
@PeterMortensen Вот почему SuperUser и Unix / Linux и ServerFault и AskUbuntu и Apple, все должны быть объединены.
Хлоя
Кроме того, вы можете установить свой собственный порядок поиска с помощьюexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh
Это гигантский сбой UX. Цифровая документация вообще не должна иметь номеров разделов; он должен иметь описательные имена и гиперссылки. Я не могу поверить, что им удалось сделать документацию настолько запутанной, что этот вопрос был просмотрен 121000 раз.
Ионо

Ответы:

497

Номер соответствует тому, из какого раздела руководства эта страница; 1 - это команды пользователя, а 8 - это сисадмин. Страница man для man сама ( man man) объясняет это и перечисляет стандартные:

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.

Существуют определенные термины, которые имеют разные страницы в разных разделах (например, printfкак команда появляется в разделе 1, как stdlibфункция появляется в разделе 3); в таких случаях вы можете передать номер раздела manперед именем страницы, чтобы выбрать, какой из них вы хотите, или использовать man -aдля отображения каждой соответствующей страницы в строке:

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

Вы можете сказать, в какие разделы входит термин man -k(эквивалентно aproposкоманде). Он также будет выполнять сопоставления подстрок (например, он будет отображаться sprintfпри запуске man -k printf), поэтому вам нужно использовать его ^termдля ограничения:

$ 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
Это, безусловно, объясняет это. Есть ли простой способ узнать, есть ли несколько страниц man для данной команды?
Wilduck
2
@ Да, отредактировано
Майкл Мрозек
11
Обратите внимание, что эти номера разделов для Linux. 1, 3 и 6 одинаковы для всех вариантов unix AFAIK, но остальные и разделы, не содержащие цифр, могут отличаться. Обычно man X introописывает, что есть в разделе X.
Жиль
2
@KeithB: я использовал несколько юнитов с разными 4,5,7,8. Digital Unix (OSF1) имел, а Solaris все еще имеет: форматы файлов в 4, misc в 5, устройства в 7. Solaris также помещает команды администратора в 1m. Я думаю, что системные вызовы в 2 универсальны, но некоторые системы также имеют некоторые интерфейсы библиотеки C в 2 (когда они должны быть тонкими обертками вокруг одноименного системного вызова).
Жиль
4
Да, кто подумал, что тебе понадобится руководство, чтобы использовать руководство ... Никогда я не казнил man man... до сих пор.
Мэтт Кларк
59

История этих номеров разделов восходит к первоначальному Руководству по программированию Unix, написанному Томпсоном и Ричи в 1971 году.

Оригинальные разделы были

  1. команды
  2. Системные звонки
  3. подпрограммы
  4. Специальные файлы
  5. Форматы файлов
  6. Пользовательские программы
  7. Разнообразный
KeithB
источник
Больше вещей из 70-х, действительно. Я думал, что это было с 80-х годов.
Рольф
«Разное» в первую очередь означает «обширную информацию обо всей подсистеме или общей функции Unix, а не об определенной конечной точке API». Смотрите, например pipe(7), tcp(7)(и несколько других сетевых людей страниц) pthreads(7), boot(7), regex(7)и т.д. Там другие вещи в разделе 7 , а также, например, ascii(7)(ASCII таблице) и man(7)(как написать страницу человека) , но широкое Docs страницы далеко самые полезные вещи в разделе 7 в моем опыте.
Кевин
31

konqueror также описывает нестандартные разделы: (спасибо @ greg0ire за идею)

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

Что это означает , что уже описано, но я также хочу добавить , что каждая секция имеет специальную справочную страницу с введением: intro. Например, смотрите man 1 introили man 3 introи так далее.

PHP-верстальщик
источник
1
Я не вижу этого на моей установке Fedora. Вступление man X не стандартно?
beatgammit
@tjameson У вас установлен man-pagesпакет?
php-кодер
15

Из 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]

Относительно того, почему они так разделены - есть некоторые совпадения. Некоторые man-страницы существуют в нескольких разделах, в зависимости от того, что вы имеете в виду.

Например, сравните man crontabс man 5 crontab- скорее всего, именно тот, который вы хотели найти.

Shadur
источник
А что есть man1pи man3p?
Tyilo
И где я должен разместить свои собственные man-страницы, расположенные в ~/man?
Tyilo
Я знал, что там были разные цифры, но я не знал, что это рифма. Спасибо
user606723
1
1p - стандартная версия руководства в формате posix. Если вы хотите написать переносимый код, вы должны использовать только справочные страницы Xp. Если ваша реализация не совместима с posix, X и man-страницы Xp могут отличаться.
andcoz
@ Тыло посмотри мой ответ
Бабкен Варданян
8

Это номера разделов. Просто введите man manили откройте konqueror и введите man: // man, и вы увидите, что это за разделы.

greg0ire
источник
7

Часто на справочную страницу ссылаются с помощью суффикса к разделу, заключенному в скобки, например:

read(2)

Этот стиль имеет два основных преимущества:

  • сразу становится ясно, что вы ссылаетесь на страницу руководства - то есть вы можете написать что-то вроде 'cf. читать (3) «вместо» ср. справочная страница раздела 3 для чтения '
  • если несколько разделов содержат справочные страницы с одним и тем же именем, указание раздела является более точным

Справочные страницы организованы в разделы, например, Раздел 1 включает в себя все справочные страницы с командами пользователя, Раздел 2 - все справочные страницы для системных вызовов, Раздел 3 - для функций библиотеки и т. Д.

В командной строке, если вы не укажете явно раздел, вы получите первую соответствующую справочную страницу в порядке обхода раздела по умолчанию, например:

$ man read

отображается BASH_BUILTINS(1)на Fedora. где

$ man 2 read

отображает справочную страницу для read()системного вызова.

Обратите внимание, что позиционная спецификация раздела не переносима - например, в Solaris вы бы указали ее следующим образом:

$ man -s 2 read

Обычно man manтакже перечисляются некоторые из доступных разделов. Но не обязательно все. Для перечисления всех доступных разделов можно перечислить подкаталоги всех каталогов, перечисленных в пути пользователя по умолчанию или в переменной среды $MANPATH. Например, в системе Fedora 23 с некоторыми установленными пакетами разработки /usr/share/manесть следующие подкаталоги:

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

Каталоги с manпрефиксом представляют каждый раздел, в то время как другие содержат переведенные разделы. Таким образом, чтобы получить список непустых разделов, можно выполнить команду, подобную этой:

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

(разделы, заканчивающиеся pсправочными страницами POSIX)

Для просмотра справочной страницы на другом языке (если есть) можно установить переменную среды, связанную с языком, например:

$ LC_MESSAGES=de_DE man read

Кроме того, каждый раздел должен иметь название introсправочной страницы , например, для просмотра через:

$ man 2 intro
maxschlepzig
источник
4

Определения для SVr4:

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

Это фактическая нумерация для «генетической» UNIX. POSIX не определяет числа.

Шили
источник