我在 CentOS 的现成别名中注意到了这一点
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
那么,当你输入 时which
,实际上是通过管道输入alias
,/usr/bin/which
对吗?似乎有点毫无意义。
$> echo xxxxxxxxxx | /usr/bin/which echo
/usr/bin/echo
管道似乎什么也没做。这里到底发生了什么?
答案1
别名允许which
命令报告除二进制文件和 shell 函数之外的别名。例如,我的 ls 命令有一个别名。如果我运行,which ls
我会得到以下内容:
$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
which
如果我通过运行删除别名unalias which
,则运行which ls
不再显示别名:
$ unalias which
$ which ls
/usr/bin/ls
不同之处在于--read-alias
选项。手册页which
对此进行了如下描述。
--read-alias, -i
Read aliases from stdin, reporting matching ones on stdout. This is
useful in combination with using an alias for which itself. For
example
alias which=´alias | which -i´.