我正在尝试为命令添加别名sudo shutdown
,但在我的系统中.profile
我不能只执行alias "sudo shutdown"="my command"
。在 Unix 中还有其他方法可以为多词命令添加别名吗?
答案1
别名位于左侧,因此您可以在右侧使用任何多词命令:
alias my_alias="multi worded command"
编辑:但是,如果您确实想要多个单词的别名 - 在您的示例中,如果您确实希望“sudo shutdown”作为别名,您可以使用以下别名功能(在 bash 手册中)来解决这个问题:
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
因此,如果您仍想使用sudo
其他命令但不想使用 with shutdown
,并且可以使用shutdown
其他命令的别名,那么您可以:
alias sudo='sudo '
alias shutdown="echo nope"
现在,sudo anything_else
将按预期工作(假设您没有的别名anything_else
,但如果有,它之前也不会起作用);但sudo shutdown
将相当于并且sudo echo nope
它将打印该字符串。
答案2
使用函数:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
答案3
引自:Bash:别名中的空格
这Bash 文档指出“对于几乎所有用途,shell 函数都比别名更受欢迎。”这是一个 shell 函数,如果参数仅包含 ,它将替换ls
并导致输出通过管道传输到。more
-la
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
作为一行代码:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
自动管道输出:
ls -la
答案4
您可以使用破折号作为解决方法:alias sudo-shutdown="your command"