前言
GNU/Linux 操作系统中,命令众多,相关配置文件的配置项也是相当多,因此我们借助帮助系统来帮助我们更好地玩转操作系统。
简短的选项说明
在 GNU/Linux 的世界中,命令主要划分为:
- Shell 的内置命令
- 非 Shell 的内置命令(即从非系统级软件包所释放出的命令)
若需要查看命令的简短选项说明,对于大多数命令而言,直接键入 --help
或 -h
即可:
Shell > w --help
Shell > dnf -h
在有些软件或服务中,有主命令的帮助说明,也有次要的功能项命令说明:
# 查看主命令的选项说明
Shell > git --help
# 查看次要功能命令的选项说明
Shell > git add --help
Shell > docker run --help
Shell > dnf list --help
手册页
在 GNU/Linux 的世界中,手册页根据相关的主题被划分为 9 个类型,默认类型为 1:
- 可执行的程序或命令。
- 系统调用(内核给定的函数)。
- 库调用(库给定的函数)。
- 特殊文件(通常位于/dev中)。
- 文件格式和约定(配置文件如 /etc/passwd)。
- 游戏(例如基于角色的应用程序)。
- 杂项(如:man(7))。
- 系统管理命令 (通常只适用于 root)。
- 非标准的内核例程。
例如,若您需要查看命令 passwd
的手册页,可键入:
Shell > man passwd
若您需要查看 /etc/chrony.conf 这个配置文件的手册页,可键入:
Shell > man 5 chrony.conf
查看 Firewalld 中 pam_unix.so 模块可用的配置项:
Shell > man 8 pam_unix
help
命令
在 Bash 当中,有一些内置命令不能通过 man
进行查看。比如当您键入 man cd
时会显示所有 Bash 内置命令的手册页,若要针对每一个内置命令进行查看的话,则需要使用 help
命令,例如:
Bash > help cd
Bash > help alias
apropos
命令
apropos
命令允许您在这些手册页当中按照关键字进行搜索,例如:
Shell > apropos clear
clear (1) - clear the terminal screen
clear_console (1) - clear the console
clearenv (3) - clear the environment
clearerr (3) - check and reset stream status
常见选项如下表所示:
选项 | 说明 |
---|---|
-r –regex |
使用正则表达式的模式匹配,这是默认的 |
-a –and |
所有关键字都同时匹配 |
-e –exact |
严格匹配而非模式匹配 |
比如在严格匹配的状态下,搜索包含 password 与 change 关键字的手册页:
Shell > apropos --exact password -a change
chage (1) - change user password expiry information
lchage (1) - Display or change user password policy
lpasswd (1) - Change group or user password
阅读手册页的内容
在手册页的内容当中,其内容被划分为多个标准或非标准结构:
- NAME 部分 – 简短的文字说明,通常为单行
- SYNOPSIS 部分 – 相关的语法或用法,例如命令的语法、配置文件的语法、函数的使用方法
- DESCRIPTION 部分 – 长的详细文字,例如介绍命令的特定功能、用法,配置文件的参数等。
- OPTIONS 部分 – 针对命令选项的说明内容
- DIRECTIVES 部分 – 配置文件的配置项或指令
- NOTES 部分 – 一些额外的特殊说明
- EXAMPLES 部分 – 示例的典型用法
- EXIT STATUS 部分– 命令执行后的返回值以及含义
- FILES 部分 – 直接或间接关联的文件
- ENVIRONMENT 部分 – 依赖的环境变量
- SEE ALSO 部分– 其他关联的参考文件或命令或杂项
- AUTHOR 部分– 作者
- COPYRIGHT 部分– 版权相关
- BUGS 部分– 已知问题或缺陷
- AVAILABILITY 部分– 通常用于说明某个命令、函数或工具在哪些系统、发行版或软件版本中可用,或者需要满足哪些依赖条件才能使用
- HISTORY 部分 – 重要的历史变更
- CONFIGURATION 部分 – 描述配置文件格式或参数的部分
- SECURITY 部分 – 说明命令的安全隐患或权限要求
- CAVEATS 部分 – 提示使用的限制或潜在危险
- TROUBLESHOOTING 部分 – 常见错误的解决方案
- VERSION NOTES 部分 – 标注功能变更或废弃情况
- COMPATIBILITY 部分 – 兼容性说明
- WARNINGS 部分 – 提示风险或需要注意的部分
- DIAGNOSTICS 部分 – 解释命令的错误代码或日志含义,用来辅助调试
- RESTRICTIONS 部分 – 命令的适用条件或权限要求(如特定的内核版本、特定的硬件等)
- AUTHOR NOTES 部分 – 开发者的未来计划或额外说明
- DEPRECATED 部分 – 标注废弃掉的命令
手册页中命令的格式标记:
- "{ }" 表示是必需的;
- "|" 表示或的意思;
- "[ ]" 表示是可选的;
- "…" 表示同样的对象可以有多个;
- "< >" 表示是可以变化的;
- 粗体表示必须按照原始样式输入;
- 斜体或下划线则表示需要使用适当的值进行替换;
- "[ | | ]" 表示两个或多个的选项,用户需要选择其中的任意一个。
本地手册页的按键操作
常用的有:
- ↑ – 向上滚动一行
- ↓ – 向下滚动一行
- Page Down – 向下滚动一页
- Page Up – 向上滚动一页
- q – 退出手册页
- g – 跳到手册页的第一行
- G – 跳到手册页的最后一行
- h – 手册页的帮助信息
在手册页中,/ 键可以进入到模式匹配,根据用户键入的字符串或正则表达式来搜索并匹配文字内容。键入了字符串或正则表达式且回车之后,使用者可以:
- n – 搜索下一个匹配的字符串
- N – 搜索上一个匹配的字符串
请注意!在手册页呈现的页面中,键入的 / 会不区分大小写进行搜索与匹配。
常见的正则表达式:
- * – 匹配前一个字符的出现次数,可以是0次或任意次数
- ? – 匹配前一个字符出现 0 次或 1 次
- + – 匹配前一个字符出现 1 次或多次
- ^ – 匹配特定的行开头,比如
^ssh
将不区分大小写匹配以 ssh 开头的行 - $ – 匹配特定的行结尾,比如
shell$
- [ ] – 匹配括号中的任意单个字符,比如
[who]
将匹配 w 或 h 或 o。[0-9]
将匹配一个数字;[0-9][a-z]
将匹配由一个数字和一个小写字母组成的字符。 - [^ ] – 匹配除括号中字符外的任何单个字符。例如
[^0-9]
将匹配任意单个非数字字符;[^a-z]
将匹配任意单个非字母的字符,因为手册页中不区分大小写。 - | – 匹配管道符两边的任意一个,比如
host|shell
- ( ) – 将括号里的字符串作为一个组合的整体。比如
([a-z]+)[1-9]([a-z]*)
会匹配到IPv4
、pkcs11
、X11
、SOCKS4
等字符串。
小技巧
大多数情况,我们的软件包都是从存储库里安装下来的,查阅手册时用 man
命令即可。
但是,如果是软件包源代码编译后进行安装的,手册页应该如何查看?
man <FILE-PATH>
,<FILE-PATH>
中的文件是形如 xxx.1.gz 或 xxxx.5.gz 这样的文件。
