在 Linux 系统中,whereis
命令是一个用于快速查找二进制程序、源代码文件和 man 手册页位置的工具。它通过搜索预定义的系统目录(如/bin
、/sbin
、/usr/bin
、/usr/share/man
等),高效定位目标文件的相关信息,适合快速查询系统自带工具或程序的安装位置。
- 文件名:无需完整路径,只需输入程序名(如
ls
、gcc
)即可。
- 选项:用于过滤查找结果(如只找二进制文件、只找 man 手册等)。
whereis
的选项主要用于限定查找的文件类型,常用选项如下:
选项 |
功能描述 |
-b |
只查找二进制程序文件(可执行文件) |
-s |
只查找源代码文件 |
-m |
只查找man 手册页文件 |
-u |
查找 “不寻常” 的文件(即缺少二进制、源码、man 页中至少一种类型的文件) |
-B <目录> |
限定查找二进制文件的目录(需配合-b 使用) |
-S <目录> |
限定查找源代码文件的目录(需配合-s 使用) |
-M <目录> |
限定查找 man 手册的目录(需配合-m 使用) |
以下通过具体例子说明whereis
的用法:
查询ls
命令的二进制文件、源代码(若存在)和 man 手册位置:
输出示例:
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
- 结果说明:
/usr/bin/ls
是二进制文件,/usr/share/man/man1/ls.1.gz
是 man 手册(无源代码,故不显示)。
只查询gcc
编译器的可执行文件位置:
输出示例:
gcc: /usr/bin/gcc /usr/lib/gcc
只查询cp
命令的 man 手册位置:
输出示例:
cp: /usr/share/man/man1/cp.1.gz
在/bin
目录中查找cat
的二进制文件:
whereis -b -B /bin -f cat
输出示例:
查找系统中缺少二进制 / 源码 /man 页中至少一种类型的文件(通常用于系统检查):
若bash
的源码不存在,可能输出:
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz
whereis
的特点是 “快” 和 “专”,但适用场景有限,需注意与其他命令的区别:
which
:只查找PATH
环境变量中定义的可执行文件(优先显示默认执行的版本),不涉及源码或 man 页。
- 例:
which python
→ 只返回默认python
的路径。
find
:可查找任意类型文件(包括普通文件、目录等),支持复杂条件(如大小、修改时间),但搜索范围广、速度慢。
- 例:
find / -name "ls"
→ 全局搜索名为ls
的文件。
locate
:基于数据库快速查找文件(包括普通文件),但数据库需定期更新(updatedb
),可能存在延迟。
whereis
仅搜索预定义的系统目录(非全局搜索),若文件不在这些目录中(如用户自定义安装的程序),可能查不到。
- 它不支持查找普通文件(如文本文件、文档),仅针对 “二进制程序、源码、man 手册” 三类文件。
- 速度极快(因搜索目录固定),适合快速验证系统工具的安装位置。
通过whereis
,可以快速定位系统级程序的核心文件位置,是系统管理和日常操作中高效的辅助工具。