Linux 使用 which&whereis 查找可执行命令

908 阅读2分钟

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

Linux中有很多的可执行命令,例如我们经常使用的cdlsmkdir等等,有时我们要查找这些命令所在的位置,该如何做呢?

Linux中有2个命令可完成该功能:whichwhereis,接下来就来具体介绍一下。

which

 which命令的作用是根据环境变量PATH设置的目录依次查找某个可执行文件的位置,并且返回第一个查找结果。也就是说,使用which命令,就可以看到某个可执行文件是否存在,以及可执行文件的位置。

语法格式

which [-a] command

选项含义

  • -a:列出所有匹配的路径,遍历所有PATH设置的目录进行查找
  • command:系统命令

如果不加-a选项,返回第一个匹配的可执行文件的路径,如果加上-a选项,则会遍历所有PATH设置的目录进行查找,返回满足条件的所有可执行文件命令的路径。

示例

  • 查看mkdir命令的位置
which mkdir
/usr/bin/mkdir

可以看到mkdir命令是在/usr/bin/目录下。

whereis

whereis命令用于查找可执行文件、源代码文件、帮助手册文件在文件系统中的位置。和之前的文章:Linux 中使用 locate 命令查找文件介绍过的locate命令一样,whereis也是通过数据库中/var/lib/mlocate/mlocate.db查找,所以查找速度也非常快。

which命令基本类似,只是多了源代码文件和帮助手册文件的查找。

语法格式

whereis [options] 字符串

常用选项

  • -b:只查找二进制文件
  • -m:只查找man帮助手册相关的文件
  • -s:只查找源代码文件

示例

  • 查找mkdir命令相关的文件
whereis mkdir
mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz

不使用任何选项参数,会查找所有二进制、帮助手册以及源代码文件。

  • 只搜索二进制文件
whereis -b mkdir
mkdir: /usr/bin/mkdir

查看man手册得知,whereis命令还支持指定查找目录:

  • -B <目录>:只在指定的目录下查找二进制文件
  • -M <目录>:只在指定的目录下查找帮助手册相关的文件
  • -S <目录>:只在指定的目录下查找源代码文件

但是我在实际使用中,指定了目录,却什么也查找不到,但是事实文件就在这个目录中,还有一个-u选项,实在是没整明白具体的作用,有些费解,了解的小伙伴可以告知,非常感谢!

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !