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
命令。
如果为ls
as 设置别名ls -al
,然后键入which ls
,则将看到:
ls: aliased to ls -al
。
which
命令。
which
这是查找别名的一种坏方法,如下所述:unix.stackexchange.com/questions/10525/… 对于Ubuntu上bash中的别名,它甚至对我都不起作用。