linux whereis命令是系统自带的二进制文件、源文件和手册页查找工具,能够快速定位指定程序相关的各类文件路径,在系统运维和日常操作中使用频率较高。

whereis命令基本语法
whereis命令的基础语法格式如下:
whereis [参数] 文件名
其中文件名可以是系统已安装的程序名称,不需要输入完整的路径,命令会自动在预设的目录范围内进行查找。
常用参数说明
whereis命令支持多个可选参数,用来限定查找的文件类型,常用参数如下表所示:
| 参数 | 作用说明 |
|---|---|
| -b | 只查找二进制可执行文件 |
| -m | 只查找手册页文件 |
| -s | 只查找源代码文件 |
| -u | 查找不包含指定类型文件的非常规文件 |
| -B | 指定查找二进制文件的目录范围 |
| -M | 指定查找手册页文件的目录范围 |
| -S | 指定查找源代码文件的目录范围 |
实际使用案例
查找指定命令的所有相关文件
直接输入命令名称,会返回该命令的二进制文件、手册页和源代码路径,以查找ls命令为例:
whereis ls # 输出结果示例:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
结果中/usr/bin/ls是ls命令的二进制可执行文件路径,/usr/share/man/man1/ls.1.gz是对应的手册页压缩文件路径。
只查找二进制可执行文件
如果只需要获取命令的可执行文件路径,可以加上-b参数:
whereis -b python3 # 输出结果示例:python3: /usr/bin/python3 /usr/bin/python3.8
指定目录范围查找文件
当需要限定查找的目录时,可以使用-B参数指定二进制文件的查找目录,注意需要配合-f参数标记文件名开始位置:
whereis -B /usr/local/bin -f nginx # 输出结果示例:nginx: /usr/local/bin/nginx
whereis与其他查找命令的区别
很多用户会混淆whereis和find、which命令的差异,三者的核心区别如下:
whereis:查找范围固定为系统预设的二进制、手册、源码目录,速度快,适合查找已安装的系统程序相关文件which:只在环境变量PATH指定的目录中查找,只返回二进制可执行文件的路径,适合确认当前环境下可执行的命令路径find:支持自定义查找目录、文件名匹配规则、文件属性过滤,查找范围更灵活,但速度相对较慢
注意事项
whereis命令只能查找已经安装在系统中的文件,如果查找的文件不存在于预设的目录范围内,会返回空结果。如果需要查找用户自定义目录下的文件,建议使用find命令。另外如果查找的文件名和系统已有命令重名,whereis会优先返回系统命令的相关路径。