Linux——whereis命令

在 Linux 系统中,whereis命令是一个用于快速查找二进制程序、源代码文件和 man 手册页位置的工具。它通过搜索预定义的系统目录(如/bin/sbin/usr/bin/usr/share/man等),高效定位目标文件的相关信息,适合快速查询系统自带工具或程序的安装位置。

一、基本语法

whereis [选项] 文件名
  • 文件名:无需完整路径,只需输入程序名(如lsgcc)即可。
  • 选项:用于过滤查找结果(如只找二进制文件、只找 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),可能存在延迟。

五、注意事项

  1. whereis仅搜索预定义的系统目录(非全局搜索),若文件不在这些目录中(如用户自定义安装的程序),可能查不到。
  2. 它不支持查找普通文件(如文本文件、文档),仅针对 “二进制程序、源码、man 手册” 三类文件。
  3. 速度极快(因搜索目录固定),适合快速验证系统工具的安装位置。
通过whereis,可以快速定位系统级程序的核心文件位置,是系统管理和日常操作中高效的辅助工具。
阅读剩余
THE END