alias which='alias | ... 起什么作用?

alias which='alias | ... 起什么作用?

我在 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´.

相关内容