Skip to content

Linux 下的帮助系统

在 Linux 中存在四种查询帮助信息的方法:

  • 命令大多提供了 --help/-h 来查询简短的使用方法
  • 通过 man command/libfile 等方式来查询命令、连接库、配置文档等详细信息,这也是 Linux 最核心的帮助系统
  • 通过 info 来查看帮助,他算是 man 的高级版本,不过大多数软件库还是只提供了 man 版本的帮助
  • 查看 /usr/share/doc 中相关的文件,这里面通常是版权说明等信息,不过有些软件也会在其中详细介绍下原理性信息

man

man 是 Linux 帮助系统的核心,可以使用 man xxx 来查询对应的帮助信息。

manpage 类型

这些帮助信息被保存在 /usr/share/man 目录下,他们以 man[1-9] 的顺序保存,每个序列保存的内容也不一样:

类型 内容
1 用户能够在 shell 中执行的命令,即/bin/usr/bin 中的命令
2 系统内核使用的函数与工具
3 一些常用的函数和函数链接库(library),以及 C 函数库(libc)
4 设备文件说明,即挂载在 /dev 下的设备的一些说明
5 配置文档,即位于 /etc 中的配置文件
6 游戏
7 各种规范和协议,例如 url、unicode 等,man 文档也算是一种协议
8 系统管理员可用的命令, 即 /sbin/usr/sbin 中的命令
9 和 kernel 相关的内容

其中最为重要的就是 1 5 8

每一个类型都有一个说明文件, 可以通过 man [1-9] intro 来打开,他详细说明了该类型相关的信息

有些字段他被分布在多个类型下,例如 man 本身就是一个命令,而 man 本身也是一种内容格式,他分别位于 1 和 7 这两种类型下,如果想要特定查找某种类型可以使用 man [1-9] xxx:

Bash
# 默认是 1
# 在 manpage 的开头 MAN(1) 就表示类型 1
yangguodong@debian:~$ man man

MAN(1)                                  Manual pager utils                                  MAN(1)

NAME
       man - an interface to the system reference manuals

# 查询位于 man7 中的条目
yangguodong@debian:~$ man 7 man

man(7)                           Miscellaneous Information Manual                           man(7)
NAME
       man - macros to format man pages

也可以使用 man -f man 来查看所有相关的文件:

Bash
yangguodong@debian:~$ man -f man
man (1)              - an interface to the system reference manuals
man (7)              - macros to format man pages

甚至还有一个 man -k xxx 来进行查找,只要文档中包含该字段的都会被列出

man -f 实际上是 whatis 命令的映射,man -k 实际上是 apropos 命令的映射,他们能够使用必须首先建立数据库,这可以通过 mandb 命令来完成。

manpage 标题

manpage 的内容会被划分为几个部分:

标题 内容
NAME 简短的名称描述
SYNOPSIS 命令的语法(syntax)简介
DESCRIPTION 较为完整的描述
OPTIONS 针对于 SYNOPSIS 中选项部分的详细说明
COMMANDS 对于交互式应用,表示能够在其中执行的命令
FILES 相关的配置文件以及参考文件
SEE ALSO 参考资料
EXAMPLE 一些范例

有时候还有些会有 AUTHORS BUG 等内容,不过核心在于 DESCRIPTION 和 OPTIONS

基本操作

man 之后会进入交互界面,我们可以在其中浏览页面,他的基本操作类似 vim:

按键 操作
k/j 上一行/下一行
PageUp 上一页
PageDown/Space 下一页
Home/g 第一页
End/G 最后一页
/string 向下搜索
?string 向上搜索
n/N 搜索后的向下向上查询
q 退出
h 帮助

info

他是较新的一种文档形式,所有的文档都位于 /usr/share/info 目录中。他以超链接的形式来组织不同的页面:

Bash
Next: Editor Basics,  Prev: Introduction,  Up: Top

2 Invoking
**********

The usual way to invoke ‘nano’ is:

     nano [FILE]

   But it is also possible to specify one or more options (*note
Command-line Options::), and to edit several files in a row.
...

他顶部有一个导航栏:

  • Next(n): 下一个节点(Node)
  • Prev(p): 上一个节点
  • Up(u): 上一层节点
  • 类似 Options:: 这样后面有两个冒号的都是可以点击的超链接,他连接一个其他节点

他对帮助进行了更加详细的分类处理更便于浏览,但唯一的问题就是大多数程序都不提供 infopage,在遇到没有 info 的他会自动跳转到 manpage。这就导致了 info 用的不多,甚至 debian 中都没有内置 info 命令。