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