Linux man 命令:查阅手册、选择节号与搜索文档
man 用于在终端阅读已安装的参考手册,包括命令、配置文件、系统调用和库函数。输入 man 页面名 就能查找相应文档;同名页面有多个类别时,用节号指定,例如 man 5 passwd。
本机手册通常更贴近已安装的软件,但仍应核对软件包版本和文档是否齐全。本文以 Linux 常见的 man-db 实现为主,说明如何打开、搜索和退出手册,以及如何排查页面缺失问题;其他实现的选项可能不同。
man 命令与手册页是什么?
man 按配置的搜索路径查找页面,将文档排版后交给分页器(pager)显示。分页器常用 less,但也受系统配置和 MANPAGER、PAGER 等环境变量影响,所以屏幕上的按键不完全由 man 决定。
man 程序并不自带所有命令的说明。文档可能随软件包安装,也可能在独立的文档包或开发包中;即使两台机器发行版相同,可见的页面也可能不同。man-db 的选项与搜索规则见 man(1) 参考手册。
基本语法与第一次查阅
下面是语法示意,不是原样执行的命令。options、section 和 page 分别代表选项、节号与页面名,方括号表示可选内容,省略号表示可以重复:
man [options] [[section] page...]
打开 ls 的手册:
man ls
成功时会显示 ls 的名称、用法和选项等内容,通常可在 less 中按 q 退出。若出现找不到页面的提示,请检查文档安装情况,不要据此判断 ls 一定不存在。
指定第 5 节:
man 5 passwd
这里查询的是 passwd 文件格式,通常对应 /etc/passwd,而不是更改密码的 passwd 命令。不指定节号时,man 按配置的顺序搜索并显示首先找到的页面,顺序不一定等于简单的数字升序。
在 less 分页器中移动、搜索和退出
以下按键适用于常见 less 配置;如果实际使用的是其他分页器或修改了按键绑定,应查看该分页器的帮助:
| 按键 | 作用 |
|---|---|
| Space、Page Down | 向前翻一屏 |
| b、Page Up | 向后翻一屏 |
| ↑、↓ | 逐行移动 |
| g | 到开头 |
| G | 到末尾 |
| /模式 | 向后文方向搜索 |
| ?模式 | 向前文方向搜索 |
| n、N | n 沿上次搜索方向继续;N 反向重复搜索 |
| h | 打开 less 自身帮助 |
| q | 退出当前分页器 |
例如打开 man ls 后,输入 /-a 并按 Enter,可搜索 -a。less 默认使用正则表达式,且可能受搜索选项影响;搜索长选项 /--all 往往更容易定位。q 退出的是当前分页器,若用 man -a 打开多页,后面仍可能出现下一页提示。详细按键见 less 官方手册。
怎样阅读手册页结构?
常见页面包含以下内容,但不是每页都具备所有栏目;系统调用还可能有 RETURN VALUE、ERRORS 等专门说明:
| 栏目 | 内容 |
|---|---|
| NAME | 名称与简短说明 |
| SYNOPSIS | 调用格式 |
| DESCRIPTION | 行为与用途 |
| OPTIONS | 选项及效果 |
| EXIT STATUS | 进程退出状态 |
| ENVIRONMENT | 相关环境变量 |
| FILES | 配置和数据路径 |
| EXAMPLES | 用例,部分页面没有 |
| SEE ALSO | 相关手册引用 |
SYNOPSIS 中的粗体通常表示原样输入,斜体表示应替换的参数,终端上也可能以颜色或下划线代替斜体。[ ] 表示可选项,... 表示重复,竖线常表示互斥选择。具体仍以该页约定为准,不要把语法占位符当成真实参数。
节号表示类别,不是版本
同一个名称可以对应命令、函数或配置格式,因此文档常写成 name(section)。Linux 常见分类如下:
| 节号 | 类别 | 示例 |
|---|---|---|
| 1 | 用户命令 | ls(1)、grep(1) |
| 2 | 系统调用 | open(2)、read(2) |
| 3 | 库函数 | printf(3)、malloc(3) |
| 4 | 特殊文件与设备 | null(4) |
| 5 | 文件格式与约定 | passwd(5)、fstab(5) |
| 6 | 游戏 | 已安装游戏的手册 |
| 7 | 概念与其他约定 | signal(7)、man-pages(7) |
| 8 | 系统管理命令 | mount(8)、useradd(8) |
| 9 | 内核例程 | 非标准类别,不是所有系统都有 |
例如 passwd(1) 与 passwd(5) 可分别打开:
man 1 passwd
man 5 passwd
前者说明用户命令,后者说明文件格式。若只安装了其中一个页面,另一个查询仍会失败。
同名页面怎样逐一查找?
查看所有匹配与简短说明
-a 会按搜索顺序依次显示匹配页面,而不是把它们合成一页。退出当前页后,man-db 可能询问是否继续:
man -a passwd
-f 查询名称对应的简短说明,通常相当于 whatis,适合先看有哪些节:
man -f passwd
whatis passwd
如果文档与索引都存在,可能得到 passwd(1)、passwd(5) 等条目;具体格式与语言取决于本机。如果没有结果,也可能只是索引尚未更新。
直接指定所需节号
man-db 支持以下几种表示法,带括号的形式应加引号,避免 shell 将括号当成语法:
man 5 passwd
man passwd.5
man 'passwd(5)'
为了易读并兼顾其他实现,优先使用 man 5 passwd。不要把 man-db 的所有便捷写法都当成任何系统都支持的标准。
不知道命令名时按关键词搜索
先查名称和简短说明
man -k 与 apropos 搜索名称及简短说明,通常比全文搜索更快:
man -k "copy files"
apropos "copy files"
引号可让包含空格的搜索词作为一个参数传给程序,不会自动转义正则表达式。包含特殊字符时,还要考虑 apropos 的匹配规则。英文短语可能无法匹配中文描述,结果也受本机索引内容影响。
需要时再查手册源文
大写 -K 执行更耗时的全局搜索,man-db 默认把搜索项作为普通字符串,使用 --regex 时才按正则表达式处理:
man -K "environment variable"
可指定节号缩小范围:
man -K 5 "password database"
man-db 搜索的是手册源文件,而不是最终排版文字。因此注释可能造成误命中,排版转义也可能导致漏查;没有匹配不能证明文档中完全没有相关概念。找到结果后仍要阅读上下文。
常用 man-db 选项
| 选项 | 含义 |
|---|---|
| -a、--all | 按顺序显示所有匹配页面 |
| -f、--whatis | 按名称查询简短说明 |
| -k、--apropos | 搜索名称与简短说明 |
| -K、--global-apropos | 在手册源文件中搜索文本 |
| -w、--where | 不显示页面,只输出源文件位置 |
| -l、--local-file | 格式化指定本地手册文件 |
| -L locale、--locale=locale | 临时指定查找页面所用区域设置 |
| -M path、--manpath=path | 指定手册搜索层次的路径 |
例如查看将读取的 ls 手册源文件位置:
man -w ls
成功时输出路径,可能以 .gz 等压缩扩展名结尾。-w 不负责显示已经格式化的全部正文。自定义 -M 路径应指向符合手册层次的目录;单个本地手册文件则应考虑 -l。
Bash 内建命令要配合 help
cd、alias、read 等可能由 shell 自身实现。先用 type 判断实际解析结果,再查当前 Bash 的内建帮助:
type cd
help cd
help -m cd
在 Bash 中,type cd 通常说明 cd 是 shell builtin;help cd 给出内建帮助,help -m cd 则使用类似手册页的结构。它们查询的是当前 Bash,不能替代其他 shell 的说明。相关用法可参阅英文版 Bash help 命令说明。
若安装了 Bash 的手册,也可以阅读完整页面:
man bash
一个名称还可能同时对应别名、函数、内建命令和外部程序。查看所有解析位置:
type -a printf
例如 printf 可能既是 Bash 内建命令,又有独立的可执行文件;man 1 printf 不一定准确描述当前调用的内建版本。内建帮助的选项也见 Bash 官方参考手册。
中文手册与区域设置
区域设置(locale)影响语言选择。先查看当前设置:
locale
echo "$LANG"
LC_ALL、LC_MESSAGES 等也可能覆盖 LANG,不能只看一个变量就确定实际语言。若安装了匹配的翻译页,man 可以优先选择它;缺少翻译时可能回退到英文。
临时要求使用 C 区域的页面选择:
man -L C ls
-L C 不安装任何翻译,也不永久更改系统设置;man 自身早期输出的帮助等信息未必随该选项改变。译文可能滞后于原文,遇到疑问应同时核对英文页和软件包版本。
找不到手册时如何排查?
区分命令缺失与文档缺失
出现 No manual entry for ... 时,先确认名称、节号和命令是否存在。下面以 ls 为例,查询其他程序时替换 ls:
type -a ls
command -v ls
第一行可列出多个解析结果,第二行通常显示当前将使用的命令或路径;它们检查命令,不检查手册是否安装。精简镜像或容器可能缺少 man 本身以及基础文档。
Debian、Ubuntu 常见安装方式如下;这是修改系统软件包的操作,需要管理权限和可用的软件源:
sudo apt update
sudo apt install man-db manpages
Rocky Linux、RHEL 系通常使用:
sudo dnf install man-db man-pages
安装时先阅读软件包管理器给出的变更计划。基础手册包不保证包含所有应用文档;例如 Debian、Ubuntu 的部分系统调用和库函数页面还可能需要 manpages-dev,SSH 配置页可能随相应客户端、服务端或文档包提供。不同版本的包名和拆分方式应以本机仓库为准。
检查索引与搜索路径
能打开页面但 -k、whatis 查不到结果时,可能是索引未建立或过期。man-db 环境可更新索引:
sudo mandb
mandb 会更新手册数据库,不会替你安装缺失的页面;若失败,应检查报告的路径和权限。行为见 mandb(8) 手册。
查看搜索路径和 MANPATH:
manpath
printf '%s\n' "$MANPATH"
MANPATH 未设置或输出为空,不等于没有默认路径,manpath 仍可按配置推导路径。自定义 MANPATH 可能覆盖常规搜索;空路径元素等规则由实现决定。排查时可对照当前 shell 的设置与 manpath 输出,不要无目的地永久写入固定路径。
三个常见查阅场景
快速定位命令选项
man tar
进入后输入 /--exclude 并按 Enter,用 n 沿原方向继续搜索,用 N 反向查找。匹配项只是文字位置,应阅读完整选项解释和适用条件。
修改配置前查文件格式
man 5 fstab
man 5 ssh_config
man 5 sshd_config
这些页面分别解释挂载表、SSH 客户端配置和 SSH 服务端配置。注意 ssh_config 与 sshd_config 对应不同程序,不能将选项互相套用。页面存在时再检查字段、允许值、注释和示例。
沿相关页面深入查阅
man 2 open
man 7 path_resolution
例如 open(2) 说明系统调用接口,path_resolution(7) 说明路径解析概念。当前页面末尾的 SEE ALSO 可作为进一步调查线索;引用页面也必须已经安装,man 才能在本地打开。
man、--help、info 与 help 的区别
| 方式 | 适合用途 | 注意事项 |
|---|---|---|
| 程序 --help | 快速查看语法和选项 | 需程序支持 |
| man 页面名 | 详细参考、环境与文件 | 依赖已安装手册及搜索配置 |
| info 主题 | 章节式长文档和示例 | 需要相应 Info 文档 |
| help 内建名 | 查询当前 Bash 内建命令 | 反映当前 Bash 的内建帮助 |
可先用 --help 快速查看受支持的选项,再用 man 阅读细节;Bash 内建命令优先结合 help,GNU 工具的章节式长文档则可使用 info。并非每个程序都支持 --help 或 --version,也不是每个程序都有独立的 Info 文档。
常见问题
man 页面名后面的数字是版本号吗?
不是。printf(1) 是用户命令页面,printf(3) 是库函数页面;数字表示文档类别,不能据此判断程序版本。
怎样退出手册?
less 通常按 q 退出。若 man -a 正在连续打开多页,还可能出现下一页提示;其他分页器请查询其帮助。
本机 man 与网上文档为什么不同?
软件版本、实现、发行版补丁或译文更新进度都可能不同。以实际安装的软件和对应文档为依据;支持版本查询的程序可再核对其 --version 输出。
完全不知道命令名怎么办?
先用 man -k 或 apropos 搜索名称和简短说明,必要时在支持的实现中用 -s 限制节号。注意语言、正则表达式与索引是否完整。
实际查阅时的顺序
先用 man man 确认本机实现,打开需要的页面后检查节号和 SYNOPSIS,再阅读选项、退出状态及相关文件。遇到同名页面时指定节号,不知道名称时先查 -k,需要定位文档来源时使用 -w。
读完后用分页器的退出键返回终端。若页面缺失,依次区分命令、文档包、索引与路径问题,比反复尝试同一命令更容易找到原因。




