whatis
命令是Linux和Unix-like系统中一个简单而实用的命令行工具,主要用于显示指定命令或关键词的简短描述信息,它通过查询系统内置的手册页(man page)数据库,快速获取命令的基本功能说明,帮助用户快速理解命令的用途,尤其适合初学者或需要快速回忆命令功能的场景,以下是关于whatis
命令的详细解析。

whatis
命令的基本功能与工作原理
whatis
命令的核心功能是从系统的man
数据库中提取命令、函数、库等的单行描述,这些描述通常取自手册页的“NAME”部分,即每个手册页开头的简要说明,执行whatis ls
会显示“ls - list directory contents”,即ls
命令的作用是列出目录内容。
whatis
的工作依赖于预先构建的man
数据库,该数据库通过mandb
或catman
命令维护,当系统安装或更新手册页后,需要运行这些命令更新数据库,以确保whatis
能查询到最新信息,数据库通常存储在/var/cache/man/
或类似目录下,按手册页的章节分类(如1代表用户命令,2代表系统调用,3代表库函数等)。
whatis
命令的语法与常用选项
whatis
命令的基本语法为:
whatis [选项] [关键词...]
常用选项:
-
-a
或--all
显示所有匹配的描述,而不仅仅是第一个。whatis -a printf
会同时显示printf
(命令)和printf
(库函数)的描述。(图片来源网络,侵删) -
-l
或--long
以长格式显示描述,包含手册页的章节号和简要说明。whatis -l ls
输出可能为:
ls (1) - list directory contents
-
-r
或--regex
将关键词视为正则表达式进行匹配。whatis -r '^ls'
会匹配所有以ls
开头的命令。 -
-w
或--wildcard
使用通配符匹配关键词。whatis -w 'l*'
会匹配所有以l
开头的命令。(图片来源网络,侵删) -
-v
或--verbose
显示详细执行信息,如查询的数据库路径和匹配过程。 -
-C
或--config-file
指定配置文件路径(默认为/etc/manpath.config
)。
多关键词查询:
whatis
支持同时查询多个关键词,用空格分隔。
whatis ls cd pwd
输出:
ls (1) - list directory contents
cd (1) - change directory
pwd (1) - print working directory
whatis
命令的输出格式与章节说明
whatis
的输出通常包含两部分:手册页章节号和描述文本,手册页章节的分类如下:
章节编号 | 内容说明 | 示例命令/函数 |
---|---|---|
1 | 用户命令 | ls , cd , grep |
2 | 系统调用 | open , fork |
3 | 库函数 | printf , malloc |
4 | 特殊文件 | null , zero |
5 | 文件格式与约定 | passwd , fstab |
6 | 游戏 | bash , tetris |
7 | 杂项 | ascii , tar |
8 | 系统管理命令 | ifconfig , service |
9 | 内核例程 | syscall |
whatis open
的输出可能是:
open (2) - open and possibly create a file
open (3p) - open a file
这表示open
在章节2(系统调用)和章节3p(POSIX库函数)中均有定义。
whatis
命令的实用场景
-
快速学习命令
初学者可以通过whatis
快速了解命令的基本功能,避免阅读完整手册页的繁琐。whatis tar
输出:
tar (1) - an archiving utility
-
避免名称冲突
当多个命令或函数同名时(如printf
既是命令又是库函数),whatis -a
可以区分不同章节的定义。 -
脚本编写与调试
在编写脚本时,若需快速确认某个命令的用途,可通过whatis
获取信息,提高效率。 -
系统维护
系统管理员可以通过whatis
检查手册页数据库的完整性,whatis -a | grep "command not found"
(需结合其他命令检测缺失的条目)
whatis
命令的局限性
-
依赖手册页数据库
若手册页未安装或数据库未更新,whatis
可能无法查询到结果,需手动运行mandb
更新数据库:sudo mandb
-
描述过于简短
whatis
仅显示单行描述,无法提供参数、选项或用法的详细信息,需结合man
命令深入查看。 -
正则表达式支持有限
虽然-r
选项支持正则表达式,但复杂匹配可能不如grep
灵活。
whatis
与其他命令的对比
命令 | 功能描述 | 适用场景 |
---|---|---|
whatis |
显示命令/函数的单行描述 | 快速查询基本用途 |
man |
显示完整的手册页(包括用法、参数等) | 深入学习命令的详细用法 |
apropos |
通过关键词搜索手册页 | 根据功能反向查找相关命令 |
help |
显示Shell内置命令的帮助信息 | 仅适用于Bash等Shell的内置命令 |
apropos "list directory"
会返回所有与“列出目录”相关的命令,而whatis ls
直接显示ls
的功能。
whatis
命令的常见问题与解决方法
-
whatis
提示“nothing appropriate found”
原因:手册页数据库未更新或关键词不存在。
解决:运行mandb
更新数据库,或检查关键词拼写是否正确。 -
whatis
输出信息不完整
原因:手册页未安装或章节错误。
解决:安装对应的手册页包(如manpages
或manpages-dev
),或使用man -k
替代查询。
相关问答FAQs
Q1: whatis
和man -k
有什么区别?
A1: whatis
仅显示命令/函数的单行描述(来自手册页的NAME部分),而man -k
(或apropos
)通过关键词搜索手册页的所有部分,返回更全面的匹配结果。man -k "copy"
会返回所有与“复制”相关的命令和函数,而whatis copy
仅显示copy
的简短描述(如果存在)。
Q2: 如何更新whatis
的数据库?
A2: 使用mandb
命令更新手册页数据库,执行sudo mandb
会重新扫描系统中的手册页并更新数据库,若安装了新的手册页,运行此命令后whatis
才能查询到最新信息。