Linux man 命令深度解析:从基础用法到手册页章节秘籍
在 Linux 命令行里,man(Manual 的缩写)绝对是离线查帮助的 “神器”—— 它能直接调出系统内置的 手册页(Manual Pages),几乎给所有命令、系统调用、配置文件都写了详细说明,不用联网就能搞清楚 “这个命令怎么用”“某个参数是啥意思”。
很多新手用 man 只会傻傻地敲 man 命令名(比如 man hostname),却没注意手册页右上角的那个数字(比如 (1))—— 这个数字叫 “手册页章节”,不同的章节对应不同类型的系统资源。把章节分类和进阶搜索技巧搞明白,man 才算真正用出价值,免得 “明明查的是命令,却蹦出来一堆代码接口说明” 看得一头雾水。
这篇文章从 “基础用法”“章节分类”“进阶搜索” 三个维度,把 man 命令的细节讲透,让它成为你 Linux 运维和开发时的 “随身工具书”。
一、man 命令基础:查看单个命令的手册页
man 命令的核心作用就是 “查某个资源的手册页”,最基础的用法日常 90% 的场景都用得上 —— 看某个命令的使用说明。
1. 基本语法
man [选项] 要查询的资源名
- 资源名:可以是 Linux 命令(如 hostname、ls)、系统调用(如 open、read)、配置文件(如 passwd、nginx.conf)等;
- 选项:后面会讲进阶选项(比如指定章节、按关键词搜索),基础用法里选项可以省略。
2. 示例:查看 hostname 命令的手册页
# 查看 hostname 命令的手册页
man hostname
执行后会进到一个 “分页阅读界面”,界面顶部会显示手册页标题(比如 HOSTNAME(1)),那个 (1) 就是前面说的 “章节号”,底部会显示当前读到了哪(比如 — Manual page hostname(1) line 1 —)。
3. 手册页阅读操作(关键快捷键)
进了分页界面之后,鼠标是用不了的,全靠快捷键翻页和操作,常用的几个如下:
| 快捷键 | 功能说明 |
|---|---|
| 空格 | 向下翻一页 |
| Enter | 向下翻一行 |
| b | 向上翻一页 |
| k | 向上翻一行 |
| /关键词 | 向下搜索 “关键词”(如搜索 -v 参数,输入 / -v) |
| n | 跳转到下一个搜索结果 |
| N | 跳转到上一个搜索结果 |
| q | 退出手册页,返回终端 |
实用技巧:快速定位参数说明
查命令手册时,最常用的其实是 “找个参数的意思”。比如想知道 hostname -i 是啥意思,可以按下面步骤来:
- 执行 man hostname 进入手册页;
- 输入 / -i 搜索 -i 参数(注意 -i 前加空格,避免匹配到其他包含 -i 的内容);
- 按 n 或 N 跳转至目标结果,即可看到 -i 参数的详细说明(如 “Display the network address (es) of the host name.”)。
二、核心细节:手册页的 9 个章节分类
很多人会疑惑:为啥执行 man passwd,有时候看到的是 passwd 命令说明,有时候看到的却是 /etc/passwd 配置文件的说明?这就是 “章节分类” 在起作用 —— 不同类型系统资源会被归到不同章节的手册页里,免得同名资源的说明混在一起。
1. 9 个章节的具体含义
Linux 手册页一共分 9 个章节,每个章节对应一类资源,章节号从 1 到 9,含义如下表(按使用频率排):
| 章节号 | 资源类型 | 涵盖内容示例 | 适用场景 |
|---|---|---|---|
| 1 | 可执行程序 / Shell 命令 | ls、hostname、cd、grep | 日常查询命令用法、参数含义 |
| 5 | 文件格式与约定 | /etc/passwd(用户配置文件)、/etc/fstab(挂载配置文件)、crontab(定时任务格式) | 想了解某个配置文件的字段含义、语法规则 |
| 8 | 超级用户 / 系统管理员命令 | useradd(创建用户)、mount(挂载磁盘)、service(服务管理) | 运维时查询管理员命令的用法 |
| 2 | 系统调用 | open(文件打开)、read(文件读取)、write(文件写入) | 开发时查询 Linux 内核提供的系统接口 |
| 3 | 库调用 | printf(C 标准库输出函数)、malloc(内存分配函数) | 开发时查询编程语言库函数的用法 |
| 4 | 特殊文件 | /dev/null(空设备文件)、/dev/sda(磁盘设备文件)、/dev/tty(终端设备文件) | 了解 /dev 目录下特殊文件的功能 |
| 7 | 概览、约定及杂项 | hostname(主机名相关概念)、man(手册页本身的说明)、ascii(ASCII 码表) | 查询通用概念、系统约定 |
| 6 | 游戏 | 早期 Linux 系统中的小游戏(如 tetris)的说明 | 几乎不用,仅作历史保留 |
| 9 | 内核例程 | Linux 内核内部的函数、数据结构(如 kmem_cache) | 内核开发人员使用,普通用户 / 开发很少用到 |
2. 如何指定章节查询?
当某个资源在好几个章节里都有手册页时(比如 passwd 在章节 1(命令)和章节 5(配置文件)里都有说明),就得用 “章节号 + 资源名” 的格式,明确指定要看哪个章节,免得默认章节不是你想要的。
语法格式:
man [章节号] 资源名
示例 1:查看 passwd 命令的说明(章节 1)
# 章节 1 是可执行命令,查看 passwd 命令(用于修改用户密码)的用法
man 1 passwd
示例 2:查看 /etc/passwd 配置文件的说明(章节 5)
# 章节 5 是文件格式,查看 /etc/passwd 配置文件的字段含义
man 5 passwd
示例 3:查看 hostname 的章节 7 说明(通用概念)
# 章节 7 是杂项,查看主机名相关的通用概念(而非 hostname 命令)
man 7 hostname
3. 关键疑问:如何知道某个资源有哪些章节?
你不确定某个资源在哪些章节里有手册页时(比如想知道 time 一共有几种手册说明),可以用 man -f 查一下这个资源的 “章节列表”。
语法格式:
man -f 资源名 # 等同于 whatis 命令
示例:查询 time 对应的章节
man -f time
输出结果:
time (1) - run programs and summarize system resource usage
time (7) - overview of time and timers
从输出可知:time 在章节 1(命令)和章节 7(杂项)中都有手册页,可根据需求指定章节查询(如 man 1 time 查看命令用法,man 7 time 查看时间相关概念)。
三、进阶用法:关键词搜索所有手册页
当你 “记不清具体命令名、只记得大概是干啥的” 时(比如想找 “查看磁盘使用情况” 的命令),man -k 能帮你 “按关键词搜所有手册页”,相当于手册页的 “全局搜索引擎”。
1. 语法格式
man -k 关键词 # 等同于 apropos 命令
- 关键词:可以是功能描述(如 disk usage)、资源类型(如 user)等,支持模糊匹配。
2. 示例 1:搜索 “磁盘使用” 相关的命令
# 搜索包含“disk usage”关键词的所有手册页
man -k "disk usage"
输出结果(部分):
df (1) - report file system disk space usage
du (1) - estimate file space usage
pydf (1) - report file system disk space usage with color
从结果能看出:df 和 du 是最常用的 “查看磁盘使用” 的命令,可以再执行 man 1 df 看具体用法。
3. 示例 2:搜索 “用户管理” 相关的资源
# 搜索包含“user”关键词的手册页
man -k user
输出结果(部分):
useradd (8) - create a new user or update default new user information
userdel (8) - delete a user account and related files
usermod (8) - modify a user account
passwd (1) - change user password
passwd (5) - password file
结果里包含了创建用户(useradd)、删除(userdel)、改密码(passwd)这些相关资源,而且都标了章节号,方便你后面精准查。
4. 注意事项:首次使用需更新数据库
要是执行 man -k 时提示 “nothing appropriate”(没匹配到结果),多半是系统的手册页数据库还没初始化,先跑下面这条命令更新一下数据库就行:
# 更新手册页搜索数据库(需 root 权限)
sudo mandb
更新完再跑 man -k 就能正常搜了。
四、总结:man 命令的核心使用场景
把 man 命令的细节摸熟之后,不同需求用对应的用法就行,总结如下:
| 使用场景 | 推荐命令 | 示例 |
|---|---|---|
| 查看某个命令的用法 | man 命令名 或 man 1 命令名 | man ls、man 1 hostname |
| 查看某个配置文件的格式 | man 5 配置文件名 | man 5 fstab、man 5 passwd |
| 查看某个资源有哪些章节 | man -f 资源名 | man -f time |
| 忘记命令名,按功能搜索 | man -k 关键词 | man -k “disk usage” |
| 查看系统调用 / 库函数(开发用) | man 2 系统调用名 / man 3 库函数名 | man 2 open、man 3 printf |
man 命令是 Linux 里最基础也最强大的帮助工具,不依赖网络,而且文档权威又详细(参数含义、示例用法、注意事项都写得很全)。刚开始可能觉得手册页又长又啰嗦,但只要掌握了 “章节分类” 和 “搜索快捷键”,就能很快定位到想要的信息,慢慢养成 “有问题先查 man” 的习惯,Linux 操作效率能涨不少。