# 1.命令简介

whereis 命令用于查找命令的二进制程序、源代码文件和 man 手册等相关文件的路径。

如果仅显示命令的绝对路径,可使用 which 命令,其他普通文件的查找需使用 locate 或 find 命令。

whereis 默认的搜索路径是从硬编码路径中查找,硬编码路径是用 glob patterns (opens new window) 定义的,以及环境变量 PATH 和 MANPATH 定义的路径。要知道使用了哪些路径,最简单的方法是使用 -l 选项来查看。

# 2.命令格式

whereis [OPTIONS] [-BMS DIRECTORY... -f] NAME...

whereis 会将提供的文件名前面的路径与后面的扩展名去掉,并找出与之相匹配的特殊文件。

# 3.选项说明

-b
	只搜索二进制文件
-m
	只搜索 man 手册
-s
	只搜索源代码
-u
	只展示有相关特殊文件(二进制程序、源代码文件、man 手册)的命令名称
-B LIST
	指定二进制文件查找目录,使用空格分隔
-M LIST
	指定 man 手册查找目录,使用空格分隔
-S LIST
	指定源代码文件查找目录,使用空格分隔
-f
	在使用 -S 、–M、-B 选项时,必须使用这个选项,用于表示目录的结束,命令名的开始
-l
	输出正在使用的有效查找路径

# 4.常用示例

(1)查看命令 which 的二进制文件与帮助手册的路径。

whereis which
which: /usr/bin/which /usr/share/man/man1/which.1.gz

(2)只搜索二进制文件 which 的路径。

whereis -b which
which: /usr/bin/which

(3)只搜索命令 which 帮助手册的路径。

whereis -m which

(4)搜索当前目录下所有文件时,只展示具有相关特殊文件的文件名。

# 当前目录下的文件
$ ll
-rwxr-xr-x 1 root root 21915 May 25 10:03 a.out
-rw-r--r-- 1 root root   351 May 25 10:03 main.cpp
-rw-r--r-- 1 root root   965 Nov  7 18:20 moretest.txt
-rw--w--w- 1 root root   316 Nov  5 15:33 passwd.md5

# 使用选项 -u 的结果
$ whereis -u *
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

# 不使用选项 -u 的结果
$ whereis *
a:main:moretest:passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

(5)指定查找命令 passwd 的目录为 /usr/bin。

$ whereis -b -B /usr/bin -f passwd
passwd: /usr/bin/passwd

(6)查看 whereis 默认的搜索路径。

$ whereis -l
bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib
bin: /usr/lib64
...

# 参考文献

whereis(1) - Linux manual page - man7.org (opens new window)

实例讲解Linux whereis 命令 (opens new window)

Last Updated: 5/17/2024, 1:47:36 AM