如何查看附加到 bash 别名的命令?

如何查看附加到 bash 别名的命令?

假设我在 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++ AltE因为我从中学到这个答案。它“扩展”当前输入的命令行,这意味着它执行别名扩展(以及其他操作)。

这是什么意思?它将当前写在命令行上的任何别名转换为别名所代表的含义。

例如,如果我输入:

$ ls

然后按Ctrl+ Alt+ E,就变成了

$ ls --time-style=locale --color=auto

答案4

您可以使用该which命令。

ls如果您为as设置别名ls -al然后输入which ls,您将看到:

ls: aliased to ls -al

相关内容