人们搜索部分的预定义顺序是什么?

人们搜索部分的预定义顺序是什么?

的描述man中的自己的手册页包含以下声明,

默认操作是按照预定义顺序搜索所有可用部分(默认为“1 nl 8 3 0 2 5 4 9 6 7”,除非被 /usr/local/etc/man_db 中的 SECTION 指令覆盖.conf),并仅显示找到的第一页,即使页面存在于多个部分中。

到底是什么意思“1 nl 8 3 0 2 5 4 9 6 7”

答案1

它是页面的“部分” man,即名称后面括号中的数字,例如ls(1)

您可以将手册页视为一组实际手册,分为几卷。例如,第一个“卷”是第 1 节,其中包含普通用户命令 - 如 ls(1)、bash(1) 和 man(1)。第 8 部分包含系统管理员的命令 - 例如关闭系统和安装软件包的命令。 (通常是非 root 用户无法使用的命令。)第 5 节包含文件格式 - 例如 /etc/passwd 和 /etc/sudo 应如何格式化。第 3 节包含各种语言(主要是 C)的库函数 - 例如 C 函数 printf()。

请注意,某些“命令”(例如cdfg)实际上是 shell 中所谓的内置命令,并且没有自己的手册页。相反,它们记录在特定 shell 的手册页中 - 例如。在 bash(1) 的手册页中。 Shell 还可以作为内置命令提供某些命令的替代方案,并且通常会使用这些命令而不是外部命令。一个例子是 bash(1) 如何获得内置版本的kill(1)。

来自 man-pages(7) 的手册页:

   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 conventions), e.g.
       man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

有时,数字中会添加字母或单词来表示手册页属于子系统或包,例如,“x”表示 X GUI 命令,如 startx(1x),或“tcl”表示属于子系统或包的命令和函数。 Tcl 语言。或者甚至它们是“可选”/“附加”或“替代”命令 - 例如,如果您有两个版本的tar,一个来自 GNU,一个来自 BSD。

要获取特定部分,您可以将部分编号添加到 man 命令中:

man passwd返回第 1 部分中的 passwd 命令(因为首先搜索第 1 部分,然后停止搜索)

man 1 passwd返回相同的结果(但现在因为我们指定了第 1 节)

man 5 passwd返回第 5 节中 /etc/passwd 的文件格式(因为我们指定了第 5 节而不是 1)

为了区分两者,您可以将它们称为 passwd(1) 和 passwd(5)(例如,如果您编写了教科书或手册页)。

因此,搜索顺序是有意义的 - 命令比文件格式更常被搜索,更不用说编程库和系统调用了。

最后,您应该注意,不同的 Unix 系统可能使用略有不同的分段,例如,我见过第 7 节用于文字处理命令,第 9 节用于游戏,我见过第 9 节用作捕获- 所有这些都适用于其他地方不适合的各种手册页。

相关内容