/ / bashのエイリアスのコマンドライン引数を自動的に引用またはグループ化できますか? - bash、エイリアス

bashでエイリアスのコマンドライン引数を自動的に引用またはグループ化する方法はありますか? - bash、エイリアス

コマンドを受け取り、リモートホスト上で実行するスクリプトがあります。それは正常に動作します、例えば:

$ rexec "ant build_all"

リモートシステム上で "ant build_all"コマンドを実行します(SSH経由など)。

私は怠け者なので、このコマンドのエイリアス(そして最終的にはいくつかのもの)を設定したいと思います。たとえば、

$ rant build_all

bashは自動的に起動します

$ rexec "ant build_all"

私はエイリアスでこれをやってみましたが、もし私が定義すれば

alias rant=rexec ant

"rant"に渡された引数は次のように末尾に追加されます:

$ rant build_all -Dtarget=Win32
(interpreted as:)
$ rexec "ant" build_all -Dtarget=Win32

これは失敗します。なぜなら、rexecは本当に1つの引数しか取らず、他の引数を無視するからです。

私はおそらくこれをbashラッパーで行うことができますbashには私のためにこれを行うための組み込み関数、おそらく引数の名前付き引数バージョン、またはperlのような引用文字列コマンド(例:qw / /)、またはそのようなものがあるのだろうかと思っていました。

回答:

回答№1の場合は3

すべての引数について、これは機能します。

function rant () {
rexec "ant $*"
}

どの引数を渡すかに応じて、引用符を調整する必要があるかもしれません。


回答№2については2

私はケン・Gの答えを使用して終わったが、1つより良い:rexを関数のように定義する:

function rex {
run_remote.sh -c "$*"
}

エイリアスでrexecを使うことができました。

alias rant="rex ant"

それでも私が必要とするように議論を包み込んでください。

私はbashでそのような関数を使うことができるのを忘れていました。これは、ラッパースクリプトを作成することなく、私が必要としていたものとまったく同じです。

グッドチップ、ありがとう!

編集: "rexec"を "rexec"に変更しました。私のシステムには既に "rexec"というプログラムがありました。


回答№3の場合は0

エイリアスではなく、関数として実行できます。

function rant { rexec "ant $1"; }

エイリアスのようにコマンドラインで呼び出すことができます