手册页中的数字是什么意思?


474

因此,例如,当我键入时,man ls我看到了LS(1)。但是,如果键入,man apachectl我会看到APACHECTL(8),如果键入,man cd我最终会得到cd(n)

我想知道括号中数字的含义是什么(如果有的话)。




4
@PeterMortensen这就是为什么SuperUser和Unix / Linux和ServerFault以及AskUbuntu和Apple都需要合并的原因。
Chloe

另外,您可以使用export MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh '18

这是巨大的UX故障。数字文档完全不应该有章节号;它应该具有描述性的名称和超链接。我不敢相信他们设法使文档如此混乱,以至于这个问题被查看了121000次。
iono

Answers:


496

该数字与该页面的手册的哪个部分相对应。1是用户命令,而8是sysadmin。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
这肯定可以解释。有没有一种简单的方法来判断给定命令是否有多个手册页?
野鸭

2
@Wil是的,编辑
Michael Mrozek

11
请注意,这些部分编号适用于Linux。所有UNIX变体AFAIK的1、3和6都相同,但是其他部分和非数字部分可以不同。通常man X intro描述一节中的内容X
吉尔斯(Gilles)2010年

2
@KeithB:我用了一些不同的4,5,7,8的unice。Digital Unix(OSF1)拥有,而Solaris仍然具有:文件格式为4,杂项为5,设备为7。Solaris还将管理员命令的大小为1m。我认为2中的系统调用是通用的,但是某些系统在2中也具有一些C库接口(当它们被认为是同名syscall的瘦包装时)。
吉尔斯(Gilles)2010年

4
thought,以为您需要使用手册才能使用手册...我从来没有执行过man man...直到现在。
马特·克拉克

59

这些小节编号的历史可以追溯到1971年Thompson和Ritchie撰写的原始Unix程序员手册

原始部分是

  1. 指令
  2. 系统调用
  3. 子程序
  4. 特殊文件
  5. 档案格式
  6. 用户维护的程序

确实有更多来自70年代的东西。我以为是80年代的。
罗尔夫

“其他”主要是指“有关整个子系统或通用Unix功能而不是特定API端点的广泛信息”。见例如pipe(7)tcp(7)(和其他一些网络手册页)pthreads(7)boot(7)regex(7),等有在第7其他的东西为好,如ascii(7)(ASCII表)以及man(7)(如何编写手册页),但广泛的文档的页面是目前根据我的经验,第7节中最有用的内容。
凯文(Kevin)

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 introman 3 intro等。


1
我在Fedora安装中没有看到这个。man X简介不是标准的吗?
Beatgammit

@tjameson是否已man-pages安装软件包?
php-coder

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 crontabman 5 crontab- 相比,后者是您要查找的对象。


什么是man1pman3p
蒂洛2011年

我应该在哪里放置自己的手册页~/man
蒂洛2011年

我知道有不同的数字,但我不知道这是押韵的。谢谢
user606723

1
1p是该手册的posix标准版本。如果要编写可移植的代码,则应仅使用Xp手册页。如果您的实现不符合posix,则X和Xp手册页可能会有所不同。
andcoz 2011年

@Tyilo看到我的答案
Babken Vardanyan

8

这些是节号。只需键入man man或打开konqueror,然后键入man:// man,您将看到这些部分。


7

通常,通过在手册页后缀后加上括号的部分来引用手册页,例如:

read(2)

这种样式有两个主要优点:

  • 很明显,您引用了手册页-即,您可以编写类似'cf.的内容。read(3)”而不是“ cf. 阅读的第3节手册页
  • 如果多个节包含具有相同名称的手册页,则指定该节更为精确

手册页按部分进行组织,例如,第1部分包含所有用户命令手册页,第2部分包含系统调用的所有手册页,第3部分包含库功能等。

在命令行上,如果未显式指定节,则将以默认节遍历顺序获得第一个匹配的手册页,例如:

$ man read

BASH_BUILTINS(1)在Fedora上显示。哪里

$ man 2 read

显示read()系统调用的手册页。

请注意,该部分的位置规范不是可移植的-例如,在Solaris上,您可以这样指定:

$ man -s 2 read

通常,man 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

(以pPOSIX手册页结尾的部分)

要以另一种语言(如果可用)查看手册页,可以设置与语言相关的环境变量,例如:

$ LC_MESSAGES=de_DE man read

另外,每个部分都应该有一个名为的简介手册页intro,例如,可以通过以下方式查看:

$ man 2 intro

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没有定义数字。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.