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 directorywhatis命令的输出格式与章节说明
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才能查询到最新信息。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/415256.html<
