which命令 – 查找命令文件
which命令的功能是用于查找命令文件,能够快速搜索二进制程序所对应的位置。如果我们既不关心同名文件(find与locate),也不关心命令所对应的源代码和帮助文件(whereis),仅仅是想找到命令本身所在的路径,那么这个which命令就太合适了。
语法格式:which [参数] 文件名
常用参数:
-a | 显示PATH变量中所有匹配的可执行文件 |
---|---|
-n | 设置文件名长度(不含路径) |
-p | 设置文件名长度(含路径) |
-V | 显示版本信息 |
-w | 设置输出时栏位的宽度 |
–help | 显示帮助信息 |
–read-functions | 从标准输入中读取Shell函数定义 |
–show-tilde | 使用波浪线代替路径中的家目录 |
–skip-dot | 跳过PATH变量中以点号开头的目录 |
操作示例
which ls 不但可以查看ls命令的存放路径,并且可以查看当前命令的别名(alias),也就是用什么组成的。
which ll
ll
实际上是ls -l
命令的别名(alias)。因此,运行which ll
命令会返回ls
命令所在的完整路径。
which
和whereis
命令都可以用于查找命令的可执行文件路径,但其实现和返回值略有不同。
which
命令会在环境变量$PATH指定的路径中查找命令的可执行文件,并将查找到的第一个可执行文件的完整路径输出到标准输出上。如果没有找到对应的可执行文件,则不会有输出。which
命令只会输出可执行文件的完整路径,而不会输出其他信息。例如:
$ which cat
/bin/cat
这条命令将输出cat命令的完整路径为/bin/cat。
而whereis
命令则会在系统预定义的若干个目录中查找命令、手册页和源代码文件等信息,并将结果输出到标准输出上。输出的结果包括命令的可执行文件路径、手册页路径和源代码路径等信息。如果没有找到对应的信息,则对应的信息不会有输出。例如:
$ whereis cat
cat: /bin/cat /usr/share/man/man1/cat.1.gz
这条命令将输出cat命令的可执行文件路径为/bin/cat,手册页路径为/usr/share/man/man1/cat.1.gz。
路径为/bin/cat,手册页路径为/usr/share/man/man1/cat.1.gz。
因此,which
命令主要用于查找命令的可执行文件路径,而whereis
命令则提供了更为全面的信息,包括可执行文件、手册页和源代码等信息。