1.命令作用
将命令的完整路径写入标准输出(Write the full path of COMMAND(s) to standard output.)
2.命令语法
Usage: /usr/bin/which [options] [--] COMMAND [...]
3.参数详解
options:
- --version, -[vV],打印版本信息并成功退出
- --help,打印此帮助信息并成功退出
- --skip-dot,跳过PATH中以点(.)开头的目录
- --skip-tilde,跳过PATH中以波浪号(~)开头的目录
- --show-dot,输出时显示的是相对路径,形如./bin/which
- --show-tilde,对于非根目录,输出HOME目录的波浪(~),形如~/bin/which
- --tty-only,如果不在tty上,则停止处理右边的选项
- --all, -a,打印PATH中的所有匹配项,而不仅仅是第一个
- --read-alias, -i,从stdin中读取别名列表,默认参数
- --skip-alias,从stdin中忽略选项--read-alias,即不读取别名的命令
- --read-functions,从stdin中读取shell函数
- --skip-functions,从stdin中忽略选项--read-functions,即不读取shell函数
4.常用用例
4.1.打印命令路径及其别名的区别
[root@node1 ~]# which ls # 打印ls命令的路径及其别名定义
alias ls='ls --color=auto'
/usr/bin/ls
[root@node1 ~]# which --read-alias ls # --read-alias是默认参数,默认会读取命令别名定义
alias ls='ls --color=auto'
/usr/bin/ls
[root@node1 ~]# which --skip-alias ls # 跳过别名后,仅显示命令路径,不显示别名定义
/usr/bin/ls
[root@node1 ~]# echo "which ls" | bash # 另外一种不显示别名的方式
/usr/bin/ls
[root@node1 ~]#
[root@node1 ~]# which ll # 打印ll命令实际的命令是ls,别名是ls -l的组合
alias ll='ls -l --color=auto'
/usr/bin/ls
[root@node1 ~]# which --skip-alias ll # 指定跳过别名,会提示无此命令
/usr/bin/which: no ll in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@node1 ~]#