假设我在 bash shell 中有一个别名。是否有一个简单的命令可以打印出别名将运行什么命令?
答案1
内置命令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
将包含在其参数列表中,以及您自己添加的任何其他参数。
答案2
只需在 Shell 提示符下输入alias
。它会输出所有当前活动的别名的列表。
或者,您可以键入alias [command]
来查看特定别名的别名,例如,如果您想要找出别名ls
的别名,您可以执行alias ls
。
答案3
我真的很喜欢Ctrl++ Alt,E因为我从中学到这个答案。它“扩展”当前输入的命令行,这意味着它执行别名扩展(以及其他操作)。
这是什么意思?它将当前写在命令行上的任何别名转换为别名所代表的含义。
例如,如果我输入:
$ ls
然后按Ctrl+ Alt+ E,就变成了
$ ls --time-style=locale --color=auto
答案4
您可以使用该which
命令。
ls
如果您为as设置别名ls -al
然后输入which ls
,您将看到:
ls: aliased to ls -al
。