在 Linux 系统中,
whereis命令是一个用于快速查找二进制程序、源代码文件和 man 手册页位置的工具。它通过搜索预定义的系统目录(如/bin、/sbin、/usr/bin、/usr/share/man等),高效定位目标文件的相关信息,适合快速查询系统自带工具或程序的安装位置。一、基本语法
whereis [选项] 文件名
- 文件名:无需完整路径,只需输入程序名(如
ls、gcc)即可。 - 选项:用于过滤查找结果(如只找二进制文件、只找 man 手册等)。
二、常用选项及功能
whereis的选项主要用于限定查找的文件类型,常用选项如下:| 选项 | 功能描述 |
|---|---|
-b |
只查找二进制程序文件(可执行文件) |
-s |
只查找源代码文件 |
-m |
只查找man 手册页文件 |
-u |
查找 “不寻常” 的文件(即缺少二进制、源码、man 页中至少一种类型的文件) |
-B <目录> |
限定查找二进制文件的目录(需配合-b使用) |
-S <目录> |
限定查找源代码文件的目录(需配合-s使用) |
-M <目录> |
限定查找 man 手册的目录(需配合-m使用) |
三、实际示例
以下通过具体例子说明
whereis的用法:1. 基础查找(默认返回所有类型)
查询
ls命令的二进制文件、源代码(若存在)和 man 手册位置:whereis ls
输出示例:
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
- 结果说明:
/usr/bin/ls是二进制文件,/usr/share/man/man1/ls.1.gz是 man 手册(无源代码,故不显示)。
2. 只查找二进制文件(-b)
只查询
gcc编译器的可执行文件位置:whereis -b gcc
输出示例:
gcc: /usr/bin/gcc /usr/lib/gcc
3. 只查找 man 手册(-m)
只查询
cp命令的 man 手册位置:whereis -m cp
输出示例:
cp: /usr/share/man/man1/cp.1.gz
4. 限定查找目录(-B/-M)
在
/bin目录中查找cat的二进制文件:whereis -b -B /bin -f cat # -f用于分隔目录和文件名
输出示例:
cat: /bin/cat
5. 查找 “不寻常” 的文件(-u)
查找系统中缺少二进制 / 源码 /man 页中至少一种类型的文件(通常用于系统检查):
whereis -u bash
若
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,可以快速定位系统级程序的核心文件位置,是系统管理和日常操作中高效的辅助工具。