Answers:
该type内建对这个有用。它不仅会告诉您别名,还会告诉您函数,内建函数,关键字和外部命令。
$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep ()
{
ps -ef | {
read -r;
printf '%s\n' "$REPLY";
grep --color=auto "$@"
}
}
type -a cmd会按优先级显示该名称的所有命令,这对于ls上面的别名本身称为的别名很有用ls。
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
这告诉您,在运行时ls,除了您自己添加的任何其他参数外,/bin/ls还将使用--color=auto并将其包含在其参数列表中。
type直到您击中别名以外的其他东西……
type它将解析/解释任何引号,因此您可以确保引号正确。
ls is aliased to 'ls --color=auto',但是如何深入一层,看看它使用的是/ bin / ls还是/ usr / local / bin / ls还是什么?
type -a ls将显示按优先顺序找到的所有ls命令。别名下面的任何一个都将由别名执行。
只需alias在Shell提示符下键入。它应该输出所有当前活动别名的列表。
或者,您可以键入alias [command]以查看特定别名的别名,例如,如果要查找ls别名的别名,则可以这样做alias ls。
alias ls以找出特定ls别名。
type但是,在两种情况下均有效。
我真的很喜欢Ctrl+ Alt+ E,因为我从中学到这个答案。它会“扩展”当前键入的命令行,这意味着它将执行别名扩展(以及其他功能)。
这意味着什么?它将把当前可能写在命令行上的任何别名转换为别名所代表的含义。
例如,如果我键入:
$ ls
然后按Ctrl+ Alt+ E,它变成
$ ls --time-style=locale --color=auto
squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R 不是squeue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
严格来说,正确答案是使用BASH_ALIASES数组,例如:
$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars
ls别名上堆叠更多的开关,而不更改其中的内容。所以我要去alias ls="${BASH_ALIASES[ls]} --time-style=iso"处理我的情况。
您可以使用该which命令。
如果为lsas 设置别名ls -al,然后键入which ls,则将看到:
ls: aliased to ls -al。
which命令。
which这是查找别名的一种坏方法,如下所述:unix.stackexchange.com/questions/10525/… 对于Ubuntu上bash中的别名,它甚至对我都不起作用。