简介
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参数,否则会提示错误。