如何测试是否定义了特定别名?

Dan*_*Dan 8 bash alias

如果定义了特定别名,我有一个 bash 脚本需要以不同的方式运行。有没有办法测试特定命令是否是 bash 中的别名?

Gre*_*hal 14

if alias <your_alias_name> 2>/dev/null; then 
  do_something
else 
  do_another_thing; 
fi
Run Code Online (Sandbox Code Playgroud)


scy*_*scy 13

我\xe2\x80\x99m会把5年前@jimmij\xe2\x80\x99s的评论变成一个答案:

\n

type -t正是为了这个目的而设计的。alias如果给定的命令是别名,它将输出。如果该命令不存在,它不会输出任何内容,这意味着您不需要重定向其 stderr 或其他内容。

\n

例子:

\n
if [ "$(type -t foo)" = \'alias\' ]; then\n    echo \'foo is an alias\'\nelse\n    echo \'foo is not an alias\'\nfi\n
Run Code Online (Sandbox Code Playgroud)\n

-t请注意, POSIX 中未定义该开关。bash 之外的 shell 可能无法实现它。

\n