如何使用 bash 别名作为命令行参数

Cur*_*ous 2 linux ssh bash shell alias

我在谷歌上查了一下这个问题,但之前似乎没有人问过这个问题。有没有办法可以设置别名并将其用作程序的命令行参数?

例如

ssh myserver
Run Code Online (Sandbox Code Playgroud)

并被myserver定义为我的服务器的IP地址

小智 5

其实是有办法的。但您需要定义两个别名。

第一:Bash 手册指出 ( LESS=+/'^ALIASES' man bash)

别名 如果别名值的最后一个字符是空白,则还会检查别名后面的下一个命令字是否有别名扩展。

记录在 POSIX规范中。感谢@gniourf_gniourf提供的链接:

如果替换单词的别名值以 <blank> 结尾,则 shell 应检查下一个命令字以进行别名替换;此过程将继续,直到发现不是有效别名的单词或别名值不以 <blank> 结尾。


所以,如果你定义了这两个别名(请保留末尾的空格):

$ alias ssh='ssh '
$ alias myserver='192.168.0.1'
$ set -x
$ ssh myserver
+ ssh 192.168.0.1
Run Code Online (Sandbox Code Playgroud)

清除别名:

$ unalias ssh
$ unalias myserver
Run Code Online (Sandbox Code Playgroud)

注1:也记录在kshzsh手册中

注2:经测试工作正常dash(未找到文档)。

维基百科关于“别名”链接的条目