我正在尝试创建一个 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
,您就可以开始了。