菜鸟科技网

whatis命令是什么?如何快速查询命令信息?

whatis 是一个在 Linux/Unix 系统中快速查询命令或函数简短、单行描述的工具,它就像一个命令的“名片”,告诉你“它是什么”。

whatis命令是什么?如何快速查询命令信息?-图1
(图片来源网络,侵删)

详细说明

whatis 是什么?

whatis 命令属于 man 命令的“工具家族”,它的核心功能是从系统的手册页 中提取命令或函数的名称简短描述(通常是描述部分的第一个句子),然后将这些信息格式化后显示出来。

你可以把它理解为 man 命令的“快速预览版”,当你只是想快速了解一个命令是做什么的,而不需要阅读完整的、可能很长的手册页时,whatis 就非常高效。

工作原理

whatis 的工作依赖于一个叫做 apropos 的命令和后台数据库。

  1. 扫描手册页:系统管理员或安装新软件时,makewhatismandb 命令会扫描系统上所有的手册页。
  2. 建立索引数据库:它会提取每个手册页的“名称”和“描述”行,并将这些信息存储在一个或多个可以快速搜索的数据库文件中(通常位于 /var/cache/man//usr/share/man/whatis.db)。
  3. 查询数据库:当你运行 whatis <keyword> 时,它实际上是在查询这个数据库,而不是实时读取所有手册页文件。

这个数据库机制使得 whatis 的查询速度非常快。

whatis命令是什么?如何快速查询命令信息?-图2
(图片来源网络,侵删)

基本语法和选项

语法:

whatis [选项] 名称...

常用选项:

选项 全称 描述
-a, --all --all 显示所有匹配项,而不仅仅是第一个,这对于重名命令很有用。
-l, --long --long 显示整个描述段落,而不仅仅是第一句话。
-r, --regex --regex 将查询字符串作为正则表达式来处理,提供更强大的搜索能力。
-w, --wildcard --wildcard 将查询字符串作为通配符模式来处理。

使用示例

示例 1:基本用法

查询 ls 命令是做什么的。

$ whatis ls
ls (1)               - list directory contents

输出解读:

whatis命令是什么?如何快速查询命令信息?-图3
(图片来源网络,侵删)
  • ls: 命令或函数的名称。
  • (1): 手册页的章节。1 代表用户命令和可执行程序,其他常见章节有:(2) 系统调用, (3) 库函数, (5) 文件格式等。
  • - list directory contents: 命令的简短描述。

示例 2:查询多个命令

你可以一次查询多个命令。

$ whatis grep find
grep (1)              - print lines matching a pattern
find (1)              - search for files in a directory hierarchy

示例 3:使用 -a 显示所有匹配项

有时候一个名字可能对应多个不同的东西(比如在不同章节)。

$ whatis open
open (1)              - open a file or directory on the default file viewer
open (2)              - open and possibly create a file or symbolic link
open (3p)             - open a file

这里 open 既是用户命令(章节1),也是系统调用(章节2)和 POSIX 库函数(章节3p)。whatis -a open 会显示所有结果,而默认的 whatis open 可能只显示其中一个。

示例 4:使用 -l 显示完整描述

如果你想看到比一句话更详细的描述。

$ whatis -l ls
ls -- list directory contents

可以看到,它显示了整个描述段落。

示例 5:使用 -r 进行正则表达式搜索

查找所有描述中包含 "list directory" 关键词的命令。

$ whatis -r "list directory"
ls (1)               - list directory contents
dir (1)              - list directory contents
vdir (1)             - list directory contents

示例 6:查询库函数

whatis 不仅可以查命令,还可以查函数。

$ whatis printf
printf (1)            - format and print data
printf (3)            - formatted output conversion

这里我们看到 printf 既是 shell 命令(章节1),也是一个 C 语言库函数(章节3)。


whatismanapropos 的区别

这三个命令经常一起使用,但功能不同,理解它们的区别很重要。

命令 功能 搜索对象
whatis 快速查询 命令/函数的名称和一句话描述 手册页的名称和描述索引
man 详细阅读 完整的手册页,包括用法、选项、示例等 完整的手册页内容
apropos 关键词搜索 所有手册页中包含该关键词的命令/函数列表 手册页的描述全文索引

简单比喻:

  • whatis:查字典的索引,告诉你某个词(命令)是什么意思(一句话)。
  • apropos:查字典的检字表,告诉你哪些词(命令)的释义里包含你想到的某个字(关键词)。
  • man:翻开字典,阅读关于某个词(命令)的完整释义和用法

whatis 是一个非常实用且高效的命令行工具,是 Linux/Unix 用户日常工作中快速了解命令功能的得力助手,当你遇到一个不熟悉的命令时,第一反应不应该是直接 man(因为可能很长),而是先用 whatis 看一眼它的“名片”,快速判断是不是你想要的命令,再决定是否需要深入阅读 man 页。

分享:
扫描分享到社交APP
上一篇
下一篇