简介
whereis 源于英语单词 “where is”,意为 “在哪里”。与 which
仅能定位可执行文件的路径不同,这个命令可用于定位指定指令的可执行文件、源代码文件和手册页文件的位置。通过在系统目录中快速搜索这些文件,whereis
能帮助用户找到特定程序及其相关文件的路径。
使用方式
whereis [选项] [-BMS 目录... -f] 命令名...
常用选项
-b
:只搜索二进制文件。-m
:只搜索手册文件。-s
:只搜索源码文件。-u
:只显示具有 “异常” 条目的命令。如果一个命令对于指定的请求类型没有唯一(没有或有多个)的条目,它就被认为是异常的。如一个命令具有多个二进制文件,多个手册页或是缺少一类或多类文件,那么这个命令就是异常的。-B list
:在list
指定的目录中搜索二进制文件。多个目录用空格分隔。必须结合-f
使用。-M list
:在list
指定的目录中搜索手册文件。多个目录用空格分隔。必须结合-f
使用。-S list
:在list
指定的目录中搜索源码文件,多个目录用空格分隔。必须结合-f
使用。-f
:终止目录列表,并标记为文件名列表的开始。当使用-B
、-M
或-S
时必须使用-f
选项。-l
:输出 whereis 命令当前使用的有效查找路径列表。当没有指定-B
、-M
、-S
选项时,-l
会输出程序在系统上找到的硬编码路径(whereis
默认使用的路径)。-h --help
:显示帮助信息。-V --version
:显示版本信息。
文件搜索路径
默认情况下,whereis
会尝试在硬编码路径(在 whereis
源码中写死的)中查找文件,这些路径是通过通配符模式定义的。该命令还会尝试使用环境变量 $PATH
和 $MANPATH
的内容作为默认搜索路径。如果你想知道哪些路径是被搜索的,最简单的方式就是使用 -l
选项。同时 -B
、-M
和 -S
的效果也会通过 -l
显示出来。
参考示例
1. 查找 ls
命令的所有相关文件
whereis ls
输出如下:
jay@jaylinuxlenovo:~$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
2. 仅查找 gcc
的可执行文件
whereis -b gcc
使用 -b
选项将搜索范围限制为可执行文件:
jay@jaylinuxlenovo:~$ whereis -b gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/gcc
3. 仅查找 man
命令的手册文件
whereis -m man
使用 -m
选项将搜索范围限制为手册文件:
jay@jaylinuxlenovo:~$ whereis -m man
man: /usr/share/man/man7/man.7.gz /usr/share/man/man1/man.1.gz
4. 在指定路径 /usr/local/bin
中查找 node
的二进制文件
whereis -B /usr/local/bin/ -f node
使用 -B
指定路径查找 node
的二进制文件,同时通过 -f
分隔路径和所要查询的命令名:
jay@jaylinuxlenovo:~$ whereis -B /usr/local/bin/ -f node
node: /usr/share/man/man1/node.1.gz /usr/local/bin/node
注意事项
whereis
命令依赖于系统的文件结构和路径设置,可能会因为路径配置不同而产生不同结果。- 使用
-B
、-M
、-S
参数时需要带上-f
参数,否则会提示错误。