一、what和which的区别
作为一个Linux运维工程师,可能你会觉得what和which这两个命令的用法相同,都是用来查找命令的,但其实它们有很大的不同。
what命令是查询一个已经执行的命令是从哪个文件夹下调用的。而which命令则是查询该命令在哪个文件夹下,可以找到命令的路径
具体来说,what命令是在PATH环境变量内的目录中查找可执行文件,找到之后再去读取文件头部信息,判断该文件是否是二进制可执行文件,然后就可以知道该命令在哪个目录下。而which命令则是直接查询PATH环境变量内目录下可执行文件的实际路径,找到即停止。
二、which命令的用法
which命令的语法格式为:
which [选项] [命令名]
其中,命令名是必须要有的参数,它表示要查询的命令所对应的可执行文件的路径。
除此之外,which命令还有一些选项:
- -a:查询所有可执行文件的路径,而不是只查询第一个可执行文件的路径。
- --skip-alias:忽略所有别名,只查询实际的可执行文件的路径。
- --skip-dot:忽略以“.”开头的目录,这些目录通常都是命令安装在个人目录下的情况。
三、常见用法举例
1. 查询某个命令的路径
假设我们想要查询命令“ls”所对应的可执行文件的路径,只需在终端中输入:
$ which ls
运行之后,会输出类似“/bin/ls”的路径。
2. 查询所有可执行文件的路径
如果想要查找某个命令在系统中所有可执行文件的路径,可以使用选项“-a”:
$ which -a gzip
这会输出所有gzip命令可执行文件的路径。
3. 忽略别名和以“.”开头的目录
有时候我们会设置一些命令的别名,如果想忽略别名直接查询实际的可执行文件路径,可以使用选项“--skip-alias”:
$ which --skip-alias ll
此外,有些命令可能会安装在个人的目录下,这些目录通常是以“.”开头的,如果不想考虑这些目录,可以使用选项“--skip-dot”:
$ which --skip-dot gcc
四、结语
which是一个常用的命令,可以帮助我们在终端中查找命令所对应的可执行文件路径。深入了解和掌握该命令可以提高我们的终端使用效率。