有没有办法在 Unix 中给多字命令取别名?

age*_*217 11 unix alias

我正在尝试为命令取别名,sudo shutdown但在我看来,.profile我不能只做alias "sudo shutdown"="my command". 有没有另一种方法可以在 Unix 中为多字命令设置别名?

小智 22

别名在左侧,因此您可以在右侧使用任何多字命令:

alias my_alias="multi worded command"
Run Code Online (Sandbox Code Playgroud)

编辑:但是,如果您真的想要多个单词的别名 - 在您的示例中,如果您真的希望“sudo shutdown”成为别名,则可以使用以下别名功能(在 bash 手册中)来解决此问题):

A trailing space in  value causes the next word to be checked for
alias substitution when the alias is expanded.
Run Code Online (Sandbox Code Playgroud)

因此,如果您仍然想sudo与其他命令一起使用但不想与其他命令一起使用,shutdown并且您可以负担得起其他命令的别名shutdown,则可以使用:

alias sudo='sudo '
alias shutdown="echo nope"
Run Code Online (Sandbox Code Playgroud)

现在,sudo anything_else将按预期工作(假设你没有 的别名anything_else,但如果你有它之前也不会工作);但sudo shutdown将等效于sudo echo nope并且它会打印该字符串。

  • 谢谢,被低估的答案;我一直在使用 `alias cd="cd "` 和单字母别名 `alias X="<directory-with-long-name>"` 来更轻松地从一个地方跳转到另一个地方。 (3认同)