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 命令。