Linux 命令中的章节号

336 阅读2分钟

经常会看到 Linux 命令后面跟着一个带数字的圆括号,例如 mount(8)ls(1) 等,一直不知道圆括号里面的数字是什么意思,当遇到 mkdir(1)mkdir(2) 的时候完全蒙了,不得不查一下这个数字到底是什么意思!

今天终于搞清楚其含义了:

命令后面跟着的圆括号内的数字表示该命令在 man 参考手册中的章节

man 手册

Linux 提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要 man xxx 一下即可,man 所显示的参考手册,会被分成几个章节,它们不仅仅包括用户命令,也包括系统管理员命令、程序接口、文件格式等等。下面是每个章节的具体含义:

  1. 用户命令,例如 ls(1)
  2. 程序接口内核系统调用,例如 mmap(2)
  3. C 库函数程序接口,例如 system(3)
  4. 特殊文件,比如说设备结点和驱动程序,例如 sudoers(4)
  5. 文件格式,例如 lmhosts(5)
  6. 游戏娱乐,如屏幕保护程序,例如 fortune(6)
  7. 其他方面,例如 regex(7)
  8. 系统管理员命令,例如 iwconfig(8)

使用 man 手册查看帮助信息的时候,man 的输出信息会被重定向到 less 这个软件中,我们可以指定查看参考手册的特定章节,从而找到我们需要的信息。

对于 mkdir 来讲,既可能是用户命令,有可能是内核程序接口,对于查询这种可能出现在 man 手册多个章节的语法时,就需要指定章节号。因为如果没有指定章节号,总是得到第一个匹配项,即第一章节中的 mkdir(1),那如果我们要看第二个章节中的 mkdir(2) 时,就要用下面的指定章节语法:

指定章节

语法为:

man [1-8] xxx

我们以 mkdir 为例,看下输出效果:

$ man 1 mkdir # 等价于 man mkdir

MKDIR(1)                  BSD General Commands Manual                 MKDIR(1)

NAME
     mkdir -- make directories

SYNOPSIS
     mkdir [-pv] [-m mode] directory_name ...

DESCRIPTION
     The mkdir utility creates the directories named as operands... 

上面的就是 Linux 用户命令,如果要看内核系统调用的 mkdir 命令,就要用下面的语法了:

$ man 2 mkdir

     int
     mkdir(const char *path, mode_t mode);

     int
     mkdirat(int fd, const char *path, mode_t mode);

DESCRIPTION
     The directory path is created with the access permissions specified by mode...

RETURN VALUES
     A 0 return value indicates success.  A -1 return value indicates an error, and an error code is stored in errno.