XARGS(1) | FreeBSD General Commands Manual | XARGS(1) |
名称
xargs — 引数の (複数の) リストを組み立て、ユーティリティを実行する書式
xargs | [ -0oprt][ -E eofstr][ -I replstr [ -R replacements][ -S replsize]][ -J replstr][ -L number][ -n number [ -x]][ -P maxprocs][ -s size][ utility [ argument ...]] |
解説
xargs コマンドは、空白、タブ、改行、EOF (end-of-file) で区切られた文字列を標準入力から読み込み、 utility にその文字列をつけて実行します。コマンド行で指定された引数は、起動のたびに utility に渡されます。このあとに続く引数は、 xargs の標準入力から得られます。これは、標準入力を読み切るまで繰り返し実行されます。
空白、タブ、改行は、シングルクォート (`` ' '') やダブルクォート (``"'') やバックスラッシュ (``\'') を使って埋め込むことができます。シングルクォートは、次のシングルクォートにマッチするまで、改行とシングルクォートを除く全ての文字をエスケープします。ダブルクォートは、次のダブルクォートにマッチするまで改行とダブルクォートを除く全ての文字をエスケープします。改行を含む全ての文字は、バックスラッシュでエスケープされます。
オプションは、次の通りです:
- -0
- 空白と改行ではなくヌル文字 (``\0'') を区切りとするように xargs に指示します。 find(1) の -print0 とともに用います。
- -E eofstr
- eofstr を論理的な EOF マーカとして使用します。
- -I replstr
- utility への引数の中に replstr が 1 回以上最大 replacements 回まで (あるいは、 -R フラグが指定されていない場合は、5 回まで) 出現したとき、出現した部分を入力行の内容全体に置換しながら utility を各入力行に対して実行します。置換が行われた後の結果の引数は、 replsize (または、 -S フラグが指定されていなければ、255) バイトを超えて増えることは、許可されていません。これは、 replsize バイトまでの、 utility への構築された引数に、できるだけ replstr を含む引数を連結することによって実装されています。サイズの制限は、 replstr を含まない utility への引数に適用されません、そして、さらに utility 自体で置換は、行われません。このオプションは、 -x オプションを暗黙のうちに実行します。
- -J replstr
-
本オプションが指定されると、
xargs は、標準入力から読み込んだデータを他のすべての引数の後に追加する代りに、このデータを最初の
replstr と置き換えます。本オプションは、入力から読み込む引数の数 (
-n) や、
xargs が生成するコマンドの大きさ (
-s) には影響しません。本オプションは、引数が置かれる場所を実行されるコマンドの中に移動するだけです。
replstr は、
xargs にとって明確な引数
argument である必要があります。これは、例えば引用された文字列の中にある場合には、解釈されません。さらに、最初の
replstr のみが置き換えられます。例えば、次のコマンドは、現在のディレクトリにある大文字で開始するファイルとディレクトリを、
destdir へコピーします:
/bin/ls -1d [A-Z]* | xargs -J % cp -Rp % destdir
- -L number
- number 行読み込むたびに utility を実行します。 EOF に到達したとき number 行よりも少ない行数しか読み込んでいない場合は、読み込み終わっている行を使って utility を呼びだします。
- -n number
- 各 utility 実行時に標準入力から拾う引数の最大数を設定します。もし計算されたバイト数が、指定された size を越えた場合 ( -s オプション参照) や utility の最後の実行時に残った引数が number 個以下の場合、 utility は、標準入力から読み込んだ引数のうち number より少数しか使いません。 number の現在のデフォルト値は、5000 です。
- -o
- 子プロセスによるコマンド実行前に、標準入力を /dev/tty として再オープンします。 xargs に対話的なアプリケーションを実行させたい場合に有用です。
- -P maxprocs
- 並列モード。一度に最大 maxprocs まで utility を実行させます。
- -p
-
実行される予定のコマンドを表示し、実行すべきかどうかをユーザに尋ねます。肯定の応答、つまり POSIX ロケールでは‘
y
’を返すと、表示したコマンドが実行され、それ以外の応答を返すとコマンドは、スキップされます。プロセスが端末に接続されていない場合は、どのコマンドも実行されることはありません。 - -r
- GNU xargs との互換性。 xargs の GNU バージョンは、たとえ、 xargs の入力が空であっても、少なくとも一度 utility 引数を実行します、そして、この振る舞いを抑制するために -r オプションをサポートしています。 xargs の FreeBSD バージョンは、空の入力で utility 引数を実行しませんが、GNU xargs とのコマンド行の互換性のために -r オプションをサポートします、しかし -r オプションは、 xargs の FreeBSD バージョンで何もしません。
- -R replacements
- -I オプションで置換を行う引数の最大数を指定します。 replacements が負の場合、置換対象の引数の数は、無制限です。
- -S replsize
- -I が置換に使用することができる (バイト単位の) 空間の量を指定します。 replsize のデフォルトは、255 です。
- -s size
- utility に渡すコマンド行の最大バイト数を設定します。 utility 名の長さ、 utility に渡される引数の長さの和 (終端の NULL も含む)、そして現在の環境がこの値以下になります。 size の現在のデフォルト値は ARG_MAX - 4096 です。
- -t
- 実行されるコマンドをその実行の直前に標準エラー出力にエコーします。
- -x
- number 引数の個数が指定した (もしくはデフォルトの) コマンド行の長と合わない場合、 xargs を強制終了します。
もし utility が指定されていなければ、 echo(1) が使われます。
utility が標準入力を読むプログラムの場合は、予期せぬ動作をするかもしれません。
コマンド行を組み立てることができないか、または起動することができないなら、または utility の起動がシグナルによって終了されるか、または utility の起動が 255 の値で終了するなら、 xargs ユーティリティは、処理入力を停止して、 utility のすべての起動が処理を終了した後に終了します。
終了ステータス
xargs ユーティリティは、エラーが起こらなければ、 0 の値で終了します。 utility を見つけることができなかったなら、 xargs は、127 の値で終了し、そうでなければ、 utility が実行できなかったなら、 xargs は、126 の値で終了します。その他のエラーが起こったなら、 xargs は、1 の値で終了します。規格
xargs ユーティリティは、 IEEE Std 1003.2 (“POSIX.2”) に準拠するはずです。 -J, -o, -P, -R と -S オプションは、他のオペレーティングシステムで利用できないかもしれない、非標準の FreeBSD 拡張です。歴史
xargs ユーティリティは、PWB UNIX で登場しました。バグ
引数の数や環境の大きさが増加するような他のコマンドの起動を utility が試みる場合、 execvp(3) が E2BIG で失敗する危険があります。xargs ユーティリティは、 -I と -J オプションで文字列の比較を行う時に、マルチバイト文字を考慮しません。このため、いくつかのロケールでは、誤った結果を生ずることがあります。
March 16, 2012 | FreeBSD |