web-dev-qa-db-ja.com

コマンドの一部としてスペースを含むBashエイリアス

私はbashエイリアスを作成しようとしています。エイリアス自体にスペースがあります。

つまり、エイリアス(つまり、con)はSudo openvpn --config /path/to/my/openvpn/configs/conエイリアスを使用すると、コマンドが読みやすくなります。

つまり、`con uk.conf` == `Sudo openvpn --config /path/to/my/openvpn/configs/uk.conf`

次のようにエイリアスを宣言できないことを理解しています:con ="Sudo openvpn --config /path/to/my/openvpn/configs/"。 bash関数はこのシナリオで機能しますか?私はそれについて聞いたことがありませんが、このマイナーな問題の解決策を研究するとき。

11
boolean.is.null

はい、関数を使用する必要があります。パラメータを追加したい場合、エイリアスは機能します。エイリアスに与えられた引数は、エイリアスプログラムに引数として渡されますが、個別のパラメータとしてであり、そこに追加されるだけではありません。説明する:

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

ご覧のとおり、エコーされたのはbarbazではなくbar bazでした。既存のパラメーターに渡す値を連結したいので、次のようなものが必要になります。

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

上記の行を~/.bashrcに追加すると、準備が整います。

12
terdon