XARGS(1)

名称
xargs - 標準入力から引数を読み、コマンドを実行する

書式
xargs [-0] [-J replstr] [ -n number [-x]] [-s size] [-t] [utility [argument ...]]

解説
xargs コマンドは空白、タブ、改行、EOF (end-of-file) で区切られた引数を標準入力 から読み込み、指定した utility にその引数をつけて実行します。

コマンドラインで指定されたユーティリティ名と引数は、 utility コマンドに渡されます。 ユーティリティに続く引数は標準入力から得られます。 utility は標準入力を読み切るまで繰り返し実行されます。

空白、タブ、改行はシングルクオート (`` ' '') やダブルクオート (``"'') やバックスラッシュ (``\'') を使って埋め込むことができます。 シングルクオートは次のシングルクオートにマッチするまで、 改行とシングルクオートを除く全ての文字をエスケープします。 ダブルクオートは次のダブルクオートにマッチするまで 改行とダブルクオートを除く全ての文字をエスケープします。 改行を含む全ての文字はバックスラッシュでエスケープされます。

オプションは以下のものがあります:

-0  空白と改行ではなくヌル文字 (``\0'') を区切りとするように xargs に指示します。 find(1) の -print0 とともに用います。

-J replstr
    本オプションが指定されると、 xargs は、標準入力から読み込んだデータを他のすべての引数の後に追加する代りに、 このデータを最初の replstr と置き換えます。 本オプションは、入力から読み込む引数の数 (-n) や、 xargs が生成するコマンドの大きさ (-s) には影響しません。 本オプションは、引数が置かれる場所を 実行されるコマンドの中に移動するだけです。 replstr は、 xargs にとって明確な引数 argument である必要があります。 これは、例えば引用された文字列の中にある場合には、解釈されません。 さらに、最初の replstr のみが置き換えられます。 例えば、次のコマンドは、 現在のディレクトリにある大文字で開始するファイルとディレクトリを、 destdir へコピーします:

        /bin/ls -1d [A-Z]* | xargs -J [] cp -rp [] destdir

-n number
    各 utility 実行時に標準入力から拾う引数の最大数を設定します。 もし計算されたバイト数が、指定された size を越えた場合 ( -s オプション参照) や utility の最後の実行時に残った引数が number 個以下の場合、 utility は、標準入力から読み込んだ引数のうち number より少数しか使いません。 number の現在のデフォルト値は 5000 です。

-s size
    utility に渡すコマンドラインの最大バイト数をセットします。 utility 名の長さと utility に渡される引数の長さの和 (終端の NULL も含む) がこの値以下になります。 size の現在のデフォルト値は ARG_MAX - 2048 です。

-t  実行されるコマンドをその実行の直前に標準エラー出力にエコーします。

-x  引数の個数が指定した (もしくはデフォルトの) コマンドライン長と 合わない場合、 xargs を強制終了します。

もし utility が指定されていなければ、 echo(1) が使われます。

utility が標準入力を読むプログラムの場合は予期せぬ動作をするかもしれません。

コマンドラインを集められなかったときや utility を起動できなかったとき、ユーティリティがシグナルで終了したとき、もしく はユーティリティが戻り値 255 で終了したときは、 xargs は (それ以上の読み込みはせずに) ただちに終了します。

戻り値
xargs は、何もエラーが起こらなければ、戻り値 0 で終了します。 utility が起動できなかった場合は、 戻り値 127 で終了します。その他のエラーでは戻り値 1 で終了します。

関連項目
echo(1), find(1)

規格
xargs ユーティリティは p1003.2 互換です。 -J オプションは非標準の FreeBSD 拡張であり、他のオペレーティングシステムでは利用できないかもしれません。

バグ
引数の数や環境の大きさが増加するような他のコマンドの起動を utility が試みる場合、 execvp(3) が E2BIG で失敗する危険があります。