Bash

帶有空格的 Bash 別名作為命令的一部分

  • December 9, 2015

我正在嘗試創建一個 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,您就可以開始了。

引用自:https://unix.stackexchange.com/questions/247119