`man`和`man(#)`有什么区别?

刚看到有人在Stackoverflow上引用man 7 regex 。 我试过man regex并得到非常相似的输出 – 似乎有轻微的差异。

那么神奇的7号是什么? 在Google上搜索man 7 unix给了我更多神秘的结果,比如UNIX(7)……

关于UNIX(7)

要回答你的“UNIX(7)”的问题,这是在第7节(杂项)中说“UNIX的手册页”的标准惯例。

要打开像init(8)这样的页面,你可以使用这个命令: man 8 init


man regex vs man 7 regex

回答你关于man regexman 7 regex之间“微妙差异”的问题:

man默认打开具有最低节号的页面。 在这种情况下,它是第3节(图书馆电话)。 从第7节(杂项)打开页面是完全不同的。

不同部分的页面可以解决不同的问题,但在这种情况下它们是相似的,请考虑:

man -f apt

 apt (8) - Advanced Package Tool apt (1) - annotation processing tool 

在此示例中,第8节(系统管理命令)中的apt与第1节(可执行程序或shell命令)中的页面完全无关。

为了将来参考,请使用man -f PAGE_NAME在所有部分中找到具有该名称的所有页面。 然后,您可以使用man SECTION PAGE_NAME打开所需部分的页面。

手册页部分

各个页面部分如下,可以从man man找到:

  1. 可执行程序或shell命令
  2. 系统调用(内核提供的function)
  3. 库调用(程序库中的函数)
  4. 特殊文件(通常位于/dev
  5. 文件格式和约定,例如/etc/passwd
  6. 游戏
  7. 其他(包括宏包和惯例),例如man(7)groff(7)
  8. 系统管理命令(通常仅用于root)
  9. 内核例程[非标准]

部分编号

man将显示任何部分的联机帮助页, man 7将显示第7部分的联机帮助页。因此,此处7指的是您正在查找手册页的特定命令的部分。

如果提供了一个部分,将指示人员仅查看本手册的该部分。


部分

请参阅下表,了解手册的部分编号,后面是它们包含的页面类型。

1:可执行程序或shell命令

2:系统调用(内核提供的function)

3:库调用(程序库中的函数)

4:特殊文件(通常在/ dev中找到)

5:文件格式和约定,例如/ etc / passwd

6:游戏

7:其他(包括宏包和惯例),例如man(7),groff(7)

8:系统管理命令(通常仅用于root)。 概述各种主题,约定和协议,字符集标准以及其他各种事物。

9:内核例程[非标准]


多个部分中的命令

在大多数情况下,您将需要使用man命令而无需额外的n 。 但是,在某些情况下,命令将出现在多个部分中。 例如,如果您发出命令man open ,则从第1部分获取openvt的手册页。但是,如果您需要查看打开的手册页作为C(或系统调用,根据上表)命令,则需要发出man 2 open

一个非常相似的例子是man printfman 3 printf 。 请发出命令并亲自查看输出的差异。


你的问题man 7 unix (UNIX(7))

因此,UNIX(7)意味着它属于第7节。


如果我没有提供章节号,默认会显示哪个部分?

默认操作是按照预定义的顺序搜索所有可用部分,并仅显示找到的第一个页面,即使页面存在于多个部分中也是如此。


我如何知道命令的节号?

你是否需要找出一个术语/命令属于man -k (相当于apropos命令)。 因此, man -k printf将搜索关键字printf的简短描述和手册页名称作为正则表达式。 打印出任何比赛。 (相当于apropos -r printf )。 发出命令,看你得到的吨。 如果需要避免子串匹配,(例如,如果你运行man -k printf它会显示sprintf),所以你需要使用^term来限制它,如下所示,

 man -k '^printf' Printf (3o) - Formatted output functions. printf (1) - format and print data printf (3) - formatted output conversion 

相关命令

如上所述,相关命令是apropos ,其搜索手册页名称和描述。 如果您不确定要查找哪个手册页但有一般概念,请使用此命令。