名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目
/usr/bin/xargs [-t] [-p] [-e [eofstr]] [-E eofstr] [-I replstr] [-i [replstr]] [-L number] [-l [number]] [-n number [-x]] [-s size] [utility [argument. ..]]
/usr/xpg6/bin/xargs [-t] [-p] [-e [eofstr]] [-E eofstr] [-I replstr] [-i [replstr]] [-L number] [-l [number]] [-n number [-x]] [-s size] [utility [argument...]]
xargs ユーティリティは、オペランドで指定された utility と argument からなり、その後にいくつかの引数を伴ったコマンド行を生成します。付加する引数は、標準入力から読み込んだものがその順序どおりに 与えられます。ただしその長さや数は、オプションで指定した値を超えることはありません。コマンド行を生成したら、xargs ユーティリティはそのコマンドを実行して、完了を待ちます。この一連の処理は、標準入力上でファイルの終わりが検出されるまで、あるいは実行したコマンドが終了ステータス 255 で終了するまで繰り返されます。
標準入力から読み込まれる引数は、引用符で囲まれていない空白文字、エスケープされていない空白文字、もしくは復帰改行文字で 区切られていなければなりません。 0 個以上の、二重引用符 (") および復帰改行以外の文字からなる文字列は、二重引用符で囲むことができます。 0 個以上の、アポストロフィ (') および復帰改行以外の文字からなる文字列は、アポストロフィで囲むことができます。 また引用符でかこまれていない文字は、いずれもバックスラッシュ (\) を先頭に付加することによりエスケープできます。utility で指定したユーティリティは、ファイルの終わりが検出されるまで、繰り返して実行されます。そのユーティリティが標準入力からデータを読み込もうとした場合、 処理の結果は予測できません。
生成したコマンド行の長さは、ユーティリティ名のバイト長と文字列として認識された各引数のバイト長 の合計となります。文字列の終端用の NULL 文字も含まれます。xargs ユーティリティは、生成したコマンドを呼び出すときに、引数と環境 リストをまとめた長さが {ARG_MAX}–2048 バイトを超えないよう、コマンド行の長さを制限します。この制限範囲の中で、-n と -s の両オプションがともに省略された場合、デフォルトのコマンド行の長さの最小値は {LINE_MAX} となります。
以下のオプションを指定できます。
論理的なファイルの終わり (EOF) を表す文字列を eofstr で指定します。この -e オプションを省略し、さらに -E も省略すると、デフォルトとして下線 (_) が論理的 EOF 文字列となります。また -e だけを記述して eofstr を省略すると、論理的 EOF 文字列機能は無効となり、下線はそのまま引数の値の一部とみなされます。xargs の標準入力からの読み込みは、ファイルの終わりに達するか、eofstr が示す文字列が現れた時点で終了します。
/usr/bin/args 内では
論理的 EOF 文字列として、デフォルトの下線の代わりに eofstr で示す文字列を使用します。xargs の標準入力からの読み込みは、ファイルの終わりに達するか、eofstr が示す文字列が現れた時点で終了します。eofstr はヌル文字列であってはなりません。
/usr/xpg6/bin/args 内では
論理的 EOF 文字列として、デフォルトの下線の代わりに eofstr で示す文字列を使用します。xargs の標準入力からの読み込みは、ファイルの終わりに達するか、eofstr が示す文字列が現れた時点で終了します。eofstr はヌル文字列であってはなりません。
eofstr がヌル文字列の場合、論理的なファイルの終わり (EOF) を表す文字列の機能が無効になり、下線文字はそのまま引数の値の一部と見なされます。
挿入モードを表します。標準入力から読み込んだ各行に対して utility で指定したユーティリティが実行されます。このとき、読み込んだ行全体を 1 つの引数とみなし、replstr が示す文字列が argument 中に含まれていればその位置に読み込んだ行の内容を挿入します。argument で指定する引数のうち、最大 5 つの引数に replstr を 1 つまたは複数個含めることができます。標準入力からの行の先頭が空白文字の場合、それらは無視されます。挿入によって生成される引数の合計長は、 255 バイトを超えることはできません。この -I オプションを指定した場合は、-x オプションが強制的に有効となります。-I と -i は相互に排他的なオプションで、両方が指定された場合には 最後に現れた方が有効です。
このオプションは -I replstr と同じ意味を持ちます。引数の replstr を省略すると、デフォルトの文字列として { } が用いられます。
number で示す数の引数行 (空の行を除く) を標準入力から読み込むたびに、utility を実行します。最後の呼び出し時、標準入力に残っている行数が number より少なくても、その引数で utility を実行します。各行は、その行で最初に現れた復帰改行をもって終わりと見なされます。ただし行の最後の文字が空白文字の場合、 次の空ではない行に継続することになります。-L、-l、-n の 3 つのオプションは相互に排他的で、 2 つ以上が指定された場合には最後に現れたものが有効です。
このオプション (小文字のエル) は、-L number と同じ意味を持ちます。number を省略すると、1 とみなされます。この -l オプションを指定した場合は、-x オプションも強制的に有効となります。
できるだけ多くの、ただし最大 number 個の引数を標準入力から読み込んで utility を呼び出します。number は正の 10 進整数です。以下の場合には、引数の個数は少なくなります。
コマンド行の累積長が、-s オプションで指定された長さ (-s オプション省略時には LINE_MAX が示す長さ) を超えた場合。
繰り返し実行の最終回に、残っている引数の数が number 未満でゼロではない場合
プロンプトモードを表します。utility を呼び出すたびに、実行してもよいかどうかユーザーに問い合わせます。トレースモード (-t) が自動的に有効となってその回のコマンド内容を表示し、その後に プロンプトメッセージが表示されます。この表示は標準エラー出力に現れます。/dev/tty から肯定の応答 (ユーザーのロケールに固有) を読み取るとコマンドを実行し、肯定の応答でない場合はその回の utility の実行は行われません。
コマンド行の長さが size で示すバイト数を超えない範囲で、できるだけ多くの引数を標準入力から読み込んで utility を呼び出します。size は正の 10 進整数です。以下の場合には、引数の個数は少なくなります。
引数の合計個数が -n オプションで指定した数を超えた場合
行数が -L オプションで指定した値を超えた場合
行の長さが size バイトに到達する前にファイルの終わりを検出した場合
「機能説明」の項で記述されている 制限が満たされている場合は、size の値としては、少なくとも {LINE_MAX} バイトまでの値がサポートされます。その制限値を超えたり、システムがサポートしている最大値を超えたりした 場合でも、エラーとは見なされません。そのような場合 xargs は、制限の範囲内で、サポートできる最大値を使用します。
トレースモードを有効にします。生成されたコマンド行は、実行する直前に標準エラー出力に書き出されます。
引数の数を表す number 引数 (-n オプションを参照) あるいは 行数を表す number 引数 (-L オプションを参照) を含むコマンド行が、明に指定された長さ (-s オプションを参照) あるいは暗に指定された長さを超えた場合、実行を中止します。
以下のオペランドを指定できます。
実行するユーティリティの名前。環境変数 PATH を使った検索パスにより得られます (environ(5) を参照) 。utility を省略すると、デフォルトとして echo(1) ユーティリティが実行されます。shell_builtins(1) に定義されている特殊な組み込みユーティリティの名前を utility で指定した場合の処理結果は定義されていません。
utility を実行するときの最初のオプションまたはオペランド。
xargs から実行されるユーティリティは、再度呼び出されても現データストリームを使う限り実行は失敗する、という ことがわかっている場合、終了ステータス 255 を使用して xargs に対し実行を終了するよう通知することができます。したがって utility は、偶然 255 を返すことのないよう、適切な終了コード値を明に指定して 実行を終了することが必要です。
入力データは行の集まりとして解析されます。引数は空白文字により区切られます。xargs を使って find dir -print や ls などのコマンドの出力を、実行対象コマンドの入力とする場合、ファイル名に空白文字や復帰改行文字が含まれていると、処理の結果は予測できません。これを防ぐには、 見つかった各ファイル名を引用符つきの文字列に変換するスクリプトを find を使って呼び出し、そのスクリプトを xargs にパイプでつなげるようにしてください。なお xargs が使う引用符の規則は、シェルの規則とは異なります。 同じ規則を採用しないのは、既存のアプリケーションが現状の規則に 依存しているのに対し、シェルの構文規則は それと互換性を持たないためです。文字列を xargs が正しく解釈できる形式に変換する簡単な方法は、各文字の前にバックスラッシュ (\) を付加することです。
{ARG_MAX} 値が大きいシステムにおいては、xargs は {LINE_MAX} より長いコマンド行を生成することがあります。これはユーティリティを呼び出すうえでは問題ではありません。xargs を使ってテキストファイルを作成する場合、ユーザーは -s オプションを使ってコマンド行の長さを明に指定しなけばなりません。
xargs ユーティリティは、エラーが発生すると終了ステータス 127 を返します。これによりアプリケーションは、「ユーティリティが見つからなかった」エラーと 「実行したユーティリティがエラーで終了した」状態とを 見分けることができます。127 という値を選んだのは、通常この値は他の意味で使われることがないためです。ほとんどのユーティリティは、小さい値を使って「一般的なエラー状態」を表し、128 より大きな値は、シグナル受信による終了の場合と 区別が困難になりかねないためです。同じような観点から、ユーティリティは見つかったが実行できなかった、 という場合に使う値として 126 が選ばれています。
次の例では、ディレクトリ $1 中の全ファイルをディレクトリ $2 へ mv コマンドで移動することと、各実行の直前にそのコマンドの内容を表示することを指定しています。
ls $1 | xargs -I {} -t mv $1/{} $2/{} |
次の例では、カッコで囲まれたコマンドの実行結果を 1 行にまとめ、それを log というファイルの終わりに追加出力することを指定しています。
(logname; date; printf "%s\n" "$0 $*") | xargs >>log |
次のコマンドは、元来コマンド行引数として入力された いくつかの対の引数を使って diff を実行します。なお元の引数リストの各要素には 空白文字が埋め込まれていない、と仮定しています。
printf "%s\n" "$*" | xargs -n 2 -x diff |
次の 2 つの例では、現在のディレクトリ中のどのファイルをアーカイブするかを ユーザーに問い合わせ、指定されたファイルを一度に 1 つずつ (以下の a.)、または複数個ずつ (以下の b.) arch にアーカイブします。
ls | xargs -p -L 1 ar -r arch ls | xargs -p -L 1 | xargs ar -r arch |
次のコマンドは、元来コマンド行引数として入力された いくつかの対の引数を使って diff コマンドを実行します。
echo $* | xargs -n 2 diff |
xargs の実行に影響を与える環境変数 LC_COLLATE、LC_CTYPE、LC_MESSAGES、NLSPATH 、PATH についての詳細は、environ(5) を参照してください。
以下の終了ステータスが返されます。
utility で指定したユーティリティのすべての実行の終了ステータスは 0 だった
指定された要求に合うコマンド行が生成できなかった、または utility で指定されたユーティリティのうちいくつかの実行で 0 でない終了ステータスが返された。または他の何らかのエラーが発生した
utility で指定されたユーティリティが見つかったが実行できなかった
utility で指定されたユーティリティが見つからなかった
指定された要求に合うコマンド行が生成できない、またはユーティリティが実行できない、または ユーティリティの実行がシグナルにより中断した、 またはユーティリティの実行が終了ステータス 255 で終了した場合、xargs ユーティリティは診断メッセージを出力し、残りの入力データを 処理することなく終了します。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcsu |
CSI |
対応済み |
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目