文件和目录管理命令 whereis
whereis 命令是 Linux 中用来快速定位二进制文件、源码文件以及帮助文档位置的工具,最后会把whereis、which、locate 区别进行详细说明。
1. 命令语法
whereis [选项] 文件名
常用选项:
选项 | 作用 |
---|---|
-b |
只查找二进制文件路径 |
-m |
只查找帮助(man)文件路径 |
-s |
只查找源代码文件路径 |
-u |
查找缺少二进制、源代码或帮助文件的程序 |
-B |
指定二进制文件搜索路径 |
-M |
指定帮助文件搜索路径 |
-S |
指定源代码文件搜索路径 |
-f |
结束路径列表,后面跟要查找的文件名 |
2. 基本用法
(1) 查找命令的全部信息
whereis ls
输出示例:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
说明:
/bin/ls
是二进制可执行文件/usr/share/man/man1/ls.1.gz
是帮助文档所在位置
(2) 只查找二进制文件
whereis -b bash
输出示例:
bash: /bin/bash /usr/bin/bash
(3) 只查找帮助文档
whereis -m bash
输出示例:
bash: /usr/share/man/man1/bash.1.gz
(4) 只查找源代码文件
whereis -s grep
输出示例:
grep: /usr/src/grep-3.4
3. 限定搜索路径
有时候系统路径太多,可以自己指定范围,这样搜索更快。
(1) 指定二进制搜索目录
whereis -B /bin -f ls
解释:
-B /bin
表示只在/bin
目录找二进制文件-f
表示路径列表结束,后面是要查找的文件名
(2) 指定帮助文件目录
whereis -M /usr/share/man/man1 -f cp
(3) 指定源码目录
whereis -S /usr/src -f grep
4. 查找缺失文件的程序
如果你想看看某个命令是不是缺少了源码或帮助文件,可以用:
whereis -u bash
输出示例:
bash: /bin/bash
说明:这里只有二进制文件路径,表示它缺少源码或帮助文档路径记录。
5. 同时组合选项
whereis
支持多选项组合,比如只找二进制和帮助文档:
whereis -bm tar
好,那我把 which
、whereis
、locate
的区别 补到这节的最后,顺着 whereis
的学习节奏来,让读者一下子把三个常用搜索命令的定位搞清楚。
6. whereis、which、locate 区别
在 Linux 中,这三个命令都是用来找文件或程序的,但原理和结果有明显不同。
命令 | 查找对象 | 查找原理 | 优点 | 缺点 |
---|---|---|---|---|
which | 可执行文件(命令) | 只在 $PATH 环境变量指定的目录中查找 |
输出路径干净准确,专注找可执行命令 | 不能找源码或帮助文件 |
whereis | 可执行文件、源码文件、帮助文档 | 在系统预定义的固定目录中搜索 | 搜索快,能一次找多种类型文件 | 只能在指定目录搜索,找不到非标准路径下的文件 |
locate | 任意文件(不仅是命令) | 搜索本地维护的数据库(由 updatedb 生成) |
搜索范围广,速度极快 | 数据库不是实时更新,可能找不到刚新建的文件 |
1. which
which ls
输出:
/bin/ls
说明:只显示可执行文件路径。
2. whereis
whereis ls
输出:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
说明:显示二进制文件 + 帮助文档路径。
3. locate
locate ls
输出(部分):
/bin/ls
/usr/share/man/man1/ls.1.gz
/usr/lib/lsblk
...
说明:列出所有包含 "ls" 的路径,范围很广。
使用建议
- 找可执行文件路径 → 用
which
- 找命令的二进制、源码和帮助文档 → 用
whereis
- 找任意文件(甚至文件夹) → 用
locate