问题描述
假设我在bash shell中有一个别名。是否有一个简单的命令来打印别名将运行的命令?
最佳解决方案
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;
echo "$REPLY";
grep --color=auto "$@"
}
}
次佳解决方案
只需在Shell提示符下键入alias
。它应该输出所有currently-active别名的列表。
或者,您可以键入alias [command]
以查看特定别名的别名,作为示例,如果您想了解ls
别名的别名,可以执行alias ls
。
第三种解决方案
我真的很喜欢Ctrl
+ Alt
+ E
,正如我从this answer获悉的。它是”expands”当前键入的命令行,这意味着它执行别名扩展(等等)。
那是什么意思?它可以将目前写在命令行上的任何别名变成别名的代名词。
例如,如果我输入:
$ ls
然后按Ctrl
+ Alt
+ E
,将它变成
$ ls --time-style=locale --color=auto
第四种方案
严格地说,正确答案是使用BASH_ALIASES数组,例如:
$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars