xargs
サイズを超える-x
と終了を指定するオプションがあります(該当するオプションを参照)。xargs
-s
xargs
これは、すべての引数がすぐに実行されるか(コマンドラインの文字数が指定された数を超えない場合-s
)、またはまったく実行されないことを意味しますか(そうでない場合)。
-x
xargs
指定された引数の数を超えないコマンドライン長の正しいサブセット(つまり、すべてではない)を使用または実行しないことは正しいですか-s
?
答え1
-x
xargs
現在ビルド中の行の引数を使用せず、不適切な引数が処理されるとすぐに終了します。
以下を使用して違いを確認できます。
(printf '%s ' {1..2048}; printf %s {1..1024}) | xargs -s 2048
ここではxargs
、1から2048の整数を受け取り、各整数の後にスペースを入れ、区切り文字なしで1から1024の間のすべての整数を受け取ります。出力パラメータとして実行され、echo
2048文字の制限に準拠しています。 1行に収まらない最後の引数を読み取ると、「引数行が長すぎますxargs
」というエラーが表示されますが、最後の引数がecho
見つかる前に累積引数として呼び出されるため、変更を確認できます。 1 2048までのすべての整数。
そして-x
:
(printf '%s ' {1..2048}; printf %s {1..1024}) | xargs -s 2048 -x
長い引数が発生したため、1854で停止し、xargs
1855で始まる引数行を構築していますが、この-x
オプションにより現在構築中の引数行に対しては何も試みません。
あるかどうかにかかわらず、コマンドを正常に実行することは不可能だと思いますxargs
。このパラメータは、パラメータ行が長すぎると、その行のどの部分もまったく処理されないようにします。-x
-x
-x
存在するかどうかにかかわらず、オーバーフローパラメータの後のパラメータは処理されません-x
。xargs
(ありがとうございます。イルカチョ私の以前のバージョンの答えが間違っていることを指摘してください。 )