Bash
帶有空格的 Bash 別名作為命令的一部分
我正在嘗試創建一個 bash 別名,其中別名本身有一個空格。
這個想法是別名 (ie
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 函式會在這種情況下工作嗎?我從來沒有聽說過,但是在研究這個小問題的解決方案時。
是的,您將需要使用一個函式。如果您想添加參數,則別名將起作用,給別名的任何參數都作為參數傳遞給別名程序,而是作為單獨的參數,而不是簡單地附加到那裡。為了顯示:
$ alias foo='echo bar' $ foo bar $ foo baz bar baz
如您所見,回顯的是
bar baz
和不是barbaz
。由於您想將傳遞給現有參數的值連接起來,因此您需要以下內容:function com(){ sudo openvpn --config /path/to/my/openvpn/configs/"$@"; }
將上面的行添加到您的
~/.bashrc
,您就可以開始了。