最初のパラメータとすべての後続のパラメータを個別にパイプする合理的な方法は何ですか?

最初のパラメータとすべての後続のパラメータを個別にパイプする合理的な方法は何ですか?

質問

--便宜上、エイリアスを指定したコマンドがあります。コマンドを呼び出した後にいくつかの追加パラメータを指定するのに面倒です。

次の例では、コマンドが呼び出され、fooエイリアスが呼び出されますrun

alias run=foo --bar --baz 

barそしてbaz常に存在するパラメーターなので、別名にあります。今、少なくとも必要なコマンドを呼び出したいと思います。必須パラメータその後、実行オプションenderの追加パラメータが続きます--

具体的に呼び出すときは、run次のように呼び出します。

run file1 -- option1 option2

これは機能し、オプション 1 と 2 が期待どおりに渡されます。

欲しいもの

私が望むのは、エイリアスがあり、次のコマンドを実行し、エイリアスrun file1 option1 option2ハンドルに引数の--前または後に(エイリアス内の)位置を指定させることです。

潜在的な答え

私がここで悩んでいるのは、関係のない解決策を見つけることです。また多くのロジック。理想的には、引数1にアクセスしてから引数1+にアクセスするようなものが欲しいが、xargsそれが目的ではないようです。私もできることがいくつかありますcut(両方ともcut -d' ' -p1動作しますcut -d' ' -f2-が、この文字列の切り捨てが最善の解決策ではないかもしれません)。

私はここでエレガントな解決策に耳を傾けています。

答え1

IMHOエイリアスの代わりにシェル関数を使用する方が賢いでしょう。

run() { 
  file="$1"
  shift
  foo --bar --baz "$file" -- "$@"
}

関連情報