带有空格的 Bash 别名作为命令的一部分

带有空格的 Bash 别名作为命令的一部分

我正在尝试创建一个 bash 别名,其中别名本身有一个空格。

这个想法是别名(即con)代表sudo openvpn --config /path/to/my/openvpn/configs/.当con使用别名时,这会产生可读的命令。

IE:`con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf`

我知道我不能像这样声明别名: con ="sudo openvpn --config /path/to/my/openvpn/configs/"。 bash 函数在这种情况下可以工作吗?我从来没有听说过这个,但是在研究这个小问题的解决方案时。

答案1

是的,您需要使用一个函数。如果您想添加参数,别名就可以工作,给予别名的任何参数都会作为参数传递给别名程序,但是作为单独的参数,而不是简单地附加到现有内容上。为了显示:

$ alias foo='echo bar'
$ foo
bar
$ foo baz
bar baz

正如您所看到的,回显的是bar baz和 不是barbaz。由于您想要将传递的值连接到现有参数,因此您需要类似以下内容:

function com(){ sudo openvpn --config /path/to/my/openvpn/configs/"$@"; }

将上面的行添加到您的中~/.bashrc,您就可以开始了。

相关内容