.\"O .TH XARGS 1 \" -*- nroff -*- .TH XARGS 1 .\"O ---------------------------------------- .\"O .SH NAME .\"O xargs \- build and execute command lines from standard input .SH 名前 xargs \- 標準入力を読み込んでコマンドラインを作成し実行する .\"O ---------------------------------------- .\"O .SH SYNOPSIS .\"O .B xargs .\"O .nh .\"O [\fIoptions\fR] .\"O [\fIcommand\fR [\fIinitial-arguments\fR]] .\"O .hy .\"O . .SH 書式 \fBxargs\fP .nh [\fIoptions\fP] [\fIcommand\fP [\fIinitial\-arguments\fP]] .hy . .\"O ---------------------------------------- .\"O .SH DESCRIPTION .\"O This manual page .\"O documents the GNU version of .\"O .BR xargs . .\"O .B xargs .\"O reads items from the standard input, delimited by blanks (which can be .\"O protected with double or single quotes or a backslash) or newlines, .\"O and executes the .\"O .I command .\"O (default is .\"O .IR /bin/echo ) .\"O one or more times with any .\"O .I initial-arguments .\"O followed by items read from standard input. Blank lines on the .\"O standard input are ignored. .SH 説明 このマニュアルページは GNU 版 \fBxargs\fP の使用法を説明しています。 \fBxargs\fP は、標準入力から空白や改行で区切られた一連の項目を読み込み (空白はダブルクォート、シングルクォート、バックスラッシュによって保護できます)、 これを引数にして、 指定した \fIcommand\fP を 1 回以上実行する (デフォルトのコマンドは \fI/bin/echo\fP です)。 このとき、ユーザーが \fIcommand\fP に対して指定した引数 (上記書式の \fIinitial\-arguments\fP) があれば、 標準入力から読み込んだ一連の項目は、その後ろに追加されます。 標準入力における空行は無視されます。 .\"O ---------------------------------------- .\"O .P .\"O The command line for .\"O .I command .\"O is built up until it reaches a system-defined limit (unless the .\"O .B \-n .\"O and .\"O .B \-L .\"O options are used). The specified .\"O .I command .\"O will be invoked as many times as necessary to use up the list of input .\"O items. In general, there will be many fewer invocations of .\"O .I command .\"O than there were items in the input. This will normally have .\"O significant performance benefits. Some commands can usefully be .\"O executed in parallel too; see the .\"O .B \-P .\"O option. .P \fIcommand\fP のコマンドラインは、 (\fB\-n\fP や \fB\-L\fP オプションが使用されていない場合は) システムが定めているコマンドラインの長さの限界に達するまで、長いものが作成されます。 そして、指定された \fIcommand\fP が、入力項目のリストを一つ残らず処理するのに必要な回数だけ、呼び出されます。 だから、おおむね、\fIcommand\fP が呼び出される回数は、入力項目の数よりも、ずっと少なくてすむわけだ。 このことは、たいていの場合、パフォーマンスを著しく向上させることになる。 なお、コマンドの中には、都合がよいことに、並列的に実行できるものもある。\fB\-P\fP オプションを参照していただきたい。 .\"O ---------------------------------------- .\"O .P .\"O Because Unix filenames can contain blanks and newlines, this default .\"O behaviour is often problematic; filenames containing blanks .\"O and/or newlines are incorrectly processed by .\"O .BR xargs . .\"O In these situations it is better to use the .\"O .B \-0 .\"O option, which .\"O prevents such problems. When using this option you will need to .\"O ensure that the program which produces the input for .\"O .B xargs .\"O also uses a null character as a separator. If that program is .\"O GNU .\"O .B find .\"O for example, the .\"O .B \-print0 .\"O option does this for you. .P Unix では、 ファイル名に空白や改行を含むことが可能なので、 こうしたデフォルトの動作は、しばしば問題となります。 空白や改行を含むファイル名は、 \fBxargs\fP によって適切に処理されません。 このような状況では、\fB\-0\fP オプションの利用をお勧めします。 これを用いれば問題を回避できます。 なお、\fB\-0\fP オプションを使う場合は、\fBxargs\fP の入力を生成するプログラム側でも、 区切り文字にヌル文字を使うようにする必要があります。 たとえば GNU \fBfind\fP を使う場合ば、 \fB\-print0\fP オプションを用いることになります。 .\"O ---------------------------------------- .\"O .P .\"O If any invocation of the command exits with a status of 255, .\"O .B xargs .\"O will stop immediately without reading any further input. An error .\"O message is issued on stderr when this happens. .\"O . .P 指定したコマンドの実行が、 終了ステータス 255 で終了すると、 \fBxargs\fP は即座に停止して、それ以上入力を読み込みません。 このときには、エラーメッセージを標準エラーに出力します。 . .\"O ---------------------------------------- .\"O .SH OPTIONS .SH オプション .\"O ---------------------------------------- .\"O .TP .\"O .B \-0, \-\-null .\"O Input items are terminated by a null character instead of by .\"O whitespace, and the quotes and backslash are not special (every .\"O character is taken literally). Disables the end of file string, which .\"O is treated like any other argument. Useful when input items might .\"O contain white space, quote marks, or backslashes. The GNU find .\"O \-print0 option produces input suitable for this mode. .TP \fB\-0, \-\-null\fP 入力される項目が、ホワイトスペース (空白や改行) ではなく、ヌル文字によって区切られます。 また、クォートやバックスラッシュは、 特別な扱いをしません (つまり、すべての文字がそのままに解釈されます)。 ファイル終端文字列は無効になり、他の引数と同じように扱われます。 このオプションは、 入力される項目にホワイトスペース、クォート、バックスラッシュなどが含まれる可能性がある場合に、役に立ちます。 GNU \fBfind\fP の \fB\-print0\fP オプションは、このモードに適した入力を生成します。 .\"O ---------------------------------------- .\"O ---------------------------------------- .\"O .TP .\"O .BI "\-a " file ", \-\-arg\-file=" file .\"O Read items from .\"O .I file .\"O instead of standard input. If you use this option, stdin remains .\"O unchanged when commands are run. Otherwise, stdin is redirected .\"O from .\"O .IR /dev/null . .TP \fB\-a \fP\fIfile\fP\fB, \-\-arg\-file=\fP\fIfile\fP 入力項目を、 標準入力からではなく \fIfile\fP から読み込みます。 デフォルトでは、 指定したコマンドが実行される際に、 標準入力が \fI/dev/null\fP に付け換えられるが、 このオプションを使用した場合は、標準入力の付け換えが起こらない。 .\"O ---------------------------------------- .\"O ---------------------------------------- .\"O .TP .\"O .BI "\-\-delimiter=" delim ", \-d" " delim" .\"O Input items are terminated by the specified character. The specified .\"O delimiter may be a single character, a C-style character escape such .\"O as .\"O .BR \en , .\"O or an octal or hexadecimal escape code. Octal and hexadecimal .\"O escape codes are understood as for the .\"O .B printf .\"O command. Multibyte characters are not supported. .\"O When processing the input, quotes and backslash are not special; every .\"O character in the input is taken literally. The .\"O .B \-d .\"O option disables any end-of-file string, which is treated like any .\"O other argument. You can use this option when the input consists of .\"O simply newline-separated items, although it is almost always better to .\"O design your program to use .\"O .B \-\-null .\"O where this is possible. .TP \fB\-\-delimiter=\fP\fIdelim\fP\fB, \-d\fP\fI delim\fP 入力される一連の項目が、指定された文字によって区切られることになる。 指定される区切り文字は、単一の文字でもよく、\fB\en\fP のような C 言語式のエスケープ文字でも、8 進数や 16 進数のエスケープコードでもよい。 8 進数や 16 進数のエスケープコードは、\fBprintf\fP コマンドの場合と同様に解釈される。 マルチバイト文字には対応していない。 入力を処理する際、クォートやバックスラッシュは特別扱いされない。 すなわち、入力中のあらゆる文字が、文字通りに解釈される。 \fB\-d\fP オプションを指定すると、ファイル終端文字列は無効になり、(\fBxargs\fP が作成するコマンドラインにおいて) 他の引数と同じように扱われる。 入力が、項目を改行で区切っているだけのような単純な構成の場合には、 このオプションを使ってもよいが、ほとんどたいていの場合、なるべくなら、\fBxargs\fP の \fB\-\-null\fP を使うように、出力側のプログラムを組み立てる方が望ましい。 .\"O ---------------------------------------- .\"O ---------------------------------------- .\"O .TP .\"O .BI \-E " eof-str" .\"O Set the end of file string to \fIeof-str\fR. If the end of file .\"O string occurs as a line of input, the rest of the input is ignored. .\"O If neither .\"O .B \-E .\"O nor .\"O .B \-e .\"O is used, no end of file string is used. .TP \fB\-E\fP\fI eof\-str\fP \fIeof\-str\fP をファイル終端文字列として設定する。 ファイル終端文字列が入力中の 1 行として現れると、それ以後の入力は無視される。 \fB\-E\fP も \fB\-e\fP も指定しない場合、ファイル終端文字列は使用されない。 .\"O ---------------------------------------- .\"O .TP .\"O .BR \-e "[\fIeof-str\fR], " "\-\-eof" [\fI=eof-str\fR] .\"O This option is a synonym for the .\"O .B \-E .\"O option. Use .\"O .B \-E .\"O instead, .\"O because it is POSIX compliant while this option is not. If .\"O \fIeof-str\fR is omitted, there is no end of file string. If neither .\"O .B \-E .\"O nor .\"O .B \-e .\"O is used, no end of file string is used. .TP \fB\-e\fP[\fIeof\-str\fP], \fB\-\-eof\fP[\fI=eof\-str\fP] このオプションは \fB\-E\fP オプションの同義語である。\fB\-E\fP の方を使っていただきたい。 理由は、そちらが POSIX に準拠しているのに対して、こちらは準拠していないからだ。 \fIeof\-str\fP の部分が省略されると、ファイル終端文字列が存在しないことになる。 \fB\-E\fP も \fB\-e\fP も指定しない場合、ファイル終端文字列は使用されない。 .\"O ---------------------------------------- .\"O .TP .\"O .BI \-I " replace-str" .\"O Replace occurrences of \fIreplace-str\fR in the initial-arguments with .\"O names read from standard input. Also, unquoted blanks do not .\"O terminate input items; instead the separator is the newline character. .\"O Implies .\"O .B \-x .\"O and .\"O .B \-L .\"O 1. .TP \fB\-I\fP\fI replace\-str\fP \fIinitial\-arguments\fP 中で文字列 \fIreplace\-str\fP が現れるすべての箇所を、標準入力から読み込んだ名前で置き換える。 なお、標準入力中にクォートされていない空白があっても、それは入力項目の区切りにはならない。 区切り文字は改行文字だけになる。 \fB\-x\fP と \fB\-L\fP 1 の指定を暗に含む。 .\"O ---------------------------------------- .\"O .TP .\"O .BR \-i "[\fIreplace-str\fR], " "\-\-replace" [\fI=replace-str\fR] .\"O This option is a synonym for .\"O .BI \-I replace-str .\"O if .\"O .I replace-str .\"O is specified. If the .\"O .I replace-str .\"O argument is missing, the effect is the same as .\"O .BR \-I {}. .\"O This option is deprecated; use .\"O .B \-I .\"O instead. .TP \fB\-i\fP[\fIreplace\-str\fP], \fB\-\-replace\fP[\fI=replace\-str\fP] このオプションは、 \fIreplace\-str\fP が指定されていれば、\fB\-I\fP\fIreplace\-str\fP の同義である。引数 \fIreplace\-str\fP が省略されていれば、\fB\-I\fP{} と同じことになる。 このオプションは非推奨である。\fB\-I\fP を使った方がよい。 .\"O ---------------------------------------- .\"O .TP .\"O .BI \-L " max-lines" .\"O Use at most \fImax-lines\fR nonblank input lines per command line. .\"O Trailing blanks cause an input line to be logically continued on the .\"O next input line. Implies .\"O .BR \-x . .TP \fB\-L\fP\fI max\-lines\fP 1 コマンドラインにつき最大 \fImax\-lines\fP 行の (空行ではない) 入力行を使用する。 入力行の行末に空白文字が付いていると、その行は次の入力行に論理的に続いていることになる。 \fB\-x\fP の指定を暗に含む。 .\"O ---------------------------------------- .\"O .TP .\"O .BR \-l "[\fImax-lines\fR], " \-\-max-lines "[=\fImax-lines\fR]" .\"O Synonym for the .\"O .B \-L .\"O option. Unlike .\"O .BR \-L , .\"O the .\"O .I max-lines .\"O argument is optional. If .\"O .I max-lines .\"O is not specified, it defaults to one. The .\"O .B \-l .\"O option is deprecated since the POSIX standard specifies .\"O .B \-L .\"O instead. .TP \fB\-l\fP[\fImax\-lines\fP], \fB\-\-max\-lines\fP[=\fImax\-lines\fP] \fB\-L\fP オプションの同義語である。\fB\-L\fP とは違って、\fImax\-lines\fP という引数を指定するかどうかは任意である。引数 \fImax\-lines\fP を指定しなかった場合は、デフォルトの 1 が使用される。POSIX 規格では \fB\-L\fP の方を使うことになっているので、\fB\-l\fP オプションの使用はお勧めできない。 .\"O ---------------------------------------- .\"O .TP .\"O .BI \-n " max-args\fB, \fI" "\-\-max\-args" \fR=\fImax-args .\"O Use at most \fImax-args\fR arguments per command line. Fewer than .\"O .I max-args .\"O arguments will be used if the size (see the .\"O .B \-s .\"O option) is exceeded, unless the .\"O .B \-x .\"O option is given, in which case .\"O .B xargs will exit. .TP \fB\-n\fP\fI max\-args\fP\fB, \fP\fB\-\-max\-args\fP=\fImax\-args\fP 1 コマンドラインにつき最大 \fImax\-args\fP 個の引数を使用する。 作成されたコマンドラインが、コマンドライン長の上限を超過する場合は (\fB\-s\fP オプション参照)、\fImax\-args\fP より少ない引数が使用されることになる。 ただし、\fB\-x\fP オプションが指定されているときは別で、その場合は \fBxargs\fP が終了する。 .\"O ---------------------------------------- .\"O .TP .\"O .BI \-P " max-procs\fR, \fI" \-\-max\-procs "\fR=\fImax-procs" .\"O Run up to .\"O .I max-procs .\"O processes at a time; the default is 1. If .\"O .I max-procs .\"O is 0, .\"O .B xargs .\"O will run as many processes as .\"O possible at a time. Use the .\"O .B \-n .\"O option or the .\"O .B \-L .\"O option with .\"O .BR \-P ; .\"O otherwise chances are that only one exec will be done. .\"O While .\"O .B xargs .\"O is running, you can send its process a SIGUSR1 signal to increase the .\"O number of commands to run simultaneously, or a SIGUSR2 to decrease the .\"O number. You cannot increase it above an implementation-defined limit .\"O (which is shown with \-\-show-limits). You cannot decrease it below .\"O 1. .\"O .B xargs .\"O never terminates its commands; when asked to decrease, it merely .\"O waits for more than one existing command to terminate before starting .\"O another. .TP \fB\-P\fP\fI max\-procs\fP, \fB\-\-max\-procs\fP=\fImax\-procs\fP 同時に実行するプロセスの最大数を \fImax\-procs\fP にする。デフォルトは 1 である。 \fImax\-procs\fP が 0 だと、\fBxargs\fP はできるだけ多くのプロセスを同時に実行しようとする。 \fB\-P\fP オプションには、\fB\-n\fP か \fB\-L\fP オプションを併せて使用するべきだ。 さもないと、おそらく exec 関数がたった一回しか実行されないことになるだろう。 \fBxargs\fP の実行中に、そのプロセスに SIGUSR1 シグナルを送れば、同時に実行するコマンドの数を増やすことができる。 また、SIGUSR2 シグナルを送れば、その数を減らすことができる。 ただし、実装が決めている上限を越えて増やすことはできないし (上限は \fI\-\-show\-limits\fP を使えば、知ることができる)、1 より少なくすることもできない。 \fBxargs\fP は、実行しているコマンドを終了させるわけではない。 実行数を減らすように命じられたときは、単に現在動いているコマンドが二つ以上終了するのを待ち、 それから別のコマンドを開始するのである。 .\"O ---------------------------------------- .\"O .\"O .B Please note .\"O that it is up to the called processes to properly manage parallel .\"O access to shared resources. For example, if more than one of them .\"O tries to print to stdout, the output will be produced in an .\"O indeterminate order (and very likely mixed up) unless the processes .\"O collaborate in some way to prevent this. Using some kind of locking .\"O scheme is one way to prevent such problems. In general, using a .\"O locking scheme will help ensure correct output but reduce performance. .\"O If you don't want to tolerate the performance difference, simply .\"O arrange for each process to produce a separate output file (or .\"O otherwise use separate resources). 注意していただきたいが、共有リソースに対する並列アクセスをきちんと管理するのは、呼び出されるプロセス側の問題である。 たとえば、複数のプロセスが標準出力に書き出そうとした場合、出力順は不定である (そして混じり合ってしまうことが多い)。 そうならないためには、プロセス同士が何らかの形で協力し合う必要がある。 ロックスキーム (locking scheme) のようなものを使うのは、そうした問題を避けるための一方法である。 ただ一般にロックスキームを使っても、出力順は適切に保証してくれるものの、パフォーマンスは低下する。 パフォーマンスが落ちるのが嫌ならば、単純に各プロセスがそれぞれ別の出力ファイルを作るように (あるいは別のリソースを使うように) すればよい。 .\"O ---------------------------------------- .\"O .TP .\"O .B \-o, \-\-open\-tty .\"O Reopen stdin as .\"O .I /dev/tty .\"O in the child process before executing the command. This is useful if .\"O you want .\"O .B xargs .\"O to run an interactive application. .TP \fB\-o, \-\-open\-tty\fP コマンド実行に先がけて、子プロセスにおいて stdin を \fI/dev/tty\fP として再オープンする。これは \fBxargs\fP を使って対話型アプリケーションを実行する場合に有用である。 .\"O ---------------------------------------- .\"O .TP .\"O .B \-p, \-\-interactive .\"O Prompt the user about whether to run each command line and read a line .\"O from the terminal. Only run the command line if the response starts .\"O with `y' or `Y'. Implies .\"O .BR -t . .TP \fB\-p, \-\-interactive\fP コマンドライン 1 行ごとに、実行するかどうかをユーザーに尋ねるプロンプトを出し、端末から 1 行読み込む。コマンドラインを実行するのは、 返答が `y' または `Y' で 始まるときだけである。自動的に \fB\-t\fP が指定される。 .\"O ---------------------------------------- .\"O .TP .\"O .BR \-\-process\-slot\-var "=\fIname\fR" .\"O Set the environment variable .\"O .I name .\"O to a unique value in each running child process. Values are reused .\"O once child processes exit. This can be used in a rudimentary load .\"O distribution scheme, for example. .TP \fB\-\-process\-slot\-var\fP=\fIname\fP 複数の子プロセスを同時実行しているとき、その各子プロセスで環境変数 \fIname\fP にユニークな値をセットする。値は、子プロセスが終了すると、再利用される。この機能は、たとえば、初歩的な負荷分散スキームで利用できる。 .\"O ---------------------------------------- .\"O .TP .\"O .B \-r, \-\-no\-run\-if\-empty .\"O If the standard input does not contain any nonblanks, do not run the .\"O command. Normally, the command is run once even if there is no input. .\"O This option is a GNU extension. .TP \fB\-r, \-\-no\-run\-if\-empty\fP 標準入力に空白しか含まれていない場合は、指定したコマンドを実行しない。 通常では、入力が全くない場合でも、コマンドが一回は実行されるのである。 このオプションは GNU の拡張である。 .\"O ---------------------------------------- .\"O .TP .\"O .BI -s " max-chars\fR, \fI" \-\-max\-chars "=\fImax-chars\fR" .\"O Use at most \fImax-chars\fR characters per command line, including the .\"O command and initial-arguments and the terminating nulls at the ends of .\"O the argument strings. The largest allowed value is system-dependent, .\"O and is calculated as the argument length limit for exec, less the size .\"O of your environment, less 2048 bytes of headroom. If this value is .\"O more than 128KiB, 128Kib is used as the default value; otherwise, the .\"O default value is the maximum. 1KiB is 1024 bytes. .\"O .B xargs .\"O automatically adapts to tighter constraints. .TP \fB\-s\fP\fI max\-chars\fP, \fB\-\-max\-chars\fP\fI=max\-chars\fP 1 コマンドラインにつき最大 \fImax\-chars\fP の文字を使用する。 この文字数には、指定したコマンドと \fIinitial\-arguments\fP、それに各引数文字列の終端を示すヌル文字も含まれる。 指定できる値の上限は、システム次第であり、exec 関数に対する引数の最大長から、現在の環境のサイズと 2048 バイトの余裕領域を引いたものである。もしその値が 128KiB 以上だったときは、デフォルトの値には 128KiB が使用される。 128KiB 未満のときは、算出された上限がデフォルトの値になる。 1KiB は 1024 バイトである。制限がより厳しい場合でも、\fBxarg\fP は自動的にそれに対応する。 .\"O ---------------------------------------- .\"O .TP .\"O .B "\-\-show\\-limits" .\"O Display the limits on the command-line length which are imposed by the .\"O operating system, .\"O .BR xargs ' .\"O choice of buffer size and the .\"O .B \-s .\"O option. Pipe the input from .\"O .I /dev/null .\"O (and perhaps specify .\"O .BR --no-run-if-empty ) .\"O if you don't want .\"O .B xargs .\"O to do anything. .TP \fB\-\-show\-limits\fP コマンドライン長の上限を表示する。コマンドライン長の上限は、 オペレーティングシステム、\fBxargs\fP が設定したバッファサイズ、それに \fB\-s\fP オプションによって決まる。\fBxargs\fP にコマンドライン長の上限の表示以外をさせたくなかったら、 入力を \fI/dev/null\fP からパイプで \fBxargs\fP に渡してやればよい (さらに \fB\-\-no\-run\-if\-empty\fP を指定した方がよいかもしれない)。 .\"O ---------------------------------------- .\"O .TP .\"O .B \-t, \-\-verbose .\"O Print the command line on the standard error output before executing .\"O it. .TP \fB\-t, \-\-verbose\fP 実行する前に、コマンドラインを標準エラー出力に表示する。 .\"O ---------------------------------------- .\"O .TP .\"O .B \-x, \-\-exit .\"O Exit if the size (see the .\"O .B \-s .\"O option) is exceeded. .TP \fB\-x, \-\-exit\fP 作成されたコマンドラインがコマンドライン長の上限を超過していたら (\fB\-s\fP オプションを参照)、終了する。 .\"O ---------------------------------------- .\"O .TP .\"O .B "\-\-help" .\"O Print a summary of the options to .\"O .B xargs .\"O and exit. .TP \fB\-\-help\fP \fBxargs\fP のオプションについて簡単に説明し終了する。 .\"O ---------------------------------------- .\"O .TP .\"O .B "\-\-version" .\"O Print the version number of .\"O .B xargs .\"O and exit. .TP \fB\-\-version\fP \fBxargs\fP のバージョン番号を表示して、終了する。 .\"O ---------------------------------------- .\"O .PP .\"O The options .\"O .B \-\-max-lines .\"O (\fB\-L\fP, \fB\-l\fP), .\"O .B \-\-replace .\"O (\fB\-I\fP, \fB\-i\fP) .\"O and .\"O .B \-\-max-args .\"O (\fB\-n\fP) .\"O are mutually exclusive. If some of them are specified at the same .\"O time, then .\"O .B xargs .\"O will generally use the option specified last on the command line, .\"O i.e., it will reset the value of the offending option (given before) .\"O to its default value. .\"O Additionally, .\"O .B xargs .\"O will issue a warning diagnostic on .\"O .IR stderr . .\"O The exception to this rule is that the special .\"O .I max-args .\"O value .\"O .I 1 .\"O ('\fB\-n\fP\fI1\fP') .\"O is ignored after the .\"O .B \-\-replace .\"O option and its aliases .\"O .B \-I .\"O and .\"O .BR \-i , .\"O because it would not actually conflict. .PP オプション \fB\-\-max\-lines\fP (\fB\-L\fP, \fB\-l\fP)、\fB\-\-replace\fP (\fB\-I\fP, \fB\-i\fP)、\fB\-\-max\-args\fP (\fB\-n\fP) は同時に指定することはできない。これらを同時に指定した場合、通常 \fBxargs\fP は、コマンドライン上の最後に指定されたオプションを利用する。つまり誤って指定された (最終分よりも前に指定された) オプション値はデフォルトにリセットされる。さらに \fBxargs\fP は警告情報を \fIstderr\fP に出力する。この仕様には例外があり、\fImax\-args\fP に対して特別な値 \fI1\fP ('\fB\-n\fP\fI1\fP') を指定した場合、\fB\-\-replace\fP オプションおよびその別名である \fB\-I\fP と \fB\-i\fP の後ろであれば、\fImax\-args\fP は無視される。これは相反する指定にならないからである。 .\"O ---------------------------------------- .\"O .\"O . . .\"O ---------------------------------------- .\"O .SH "EXAMPLES" .\"O .nf .\"O .B find /tmp \-name core \-type f \-print | xargs /bin/rm \-f .SH 例 .nf \fBfind /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP .\"O ---------------------------------------- .\"O .\"O .fi .\"O Find files named .\"O .B core .\"O in or below the directory .\"O .B /tmp .\"O and delete them. Note that this will work incorrectly if there are .\"O any filenames containing newlines or spaces. .fi \fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを探して、それを消去する。 改行や空白を含むファイル名があると、正しく動作しないので、注意すること。 .\"O ---------------------------------------- .\"O .P .\"O .B find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f .P \fBfind /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP .\"O ---------------------------------------- .\"O .\"O Find files named .\"O .B core .\"O in or below the directory .\"O .B /tmp .\"O and delete them, processing filenames in such a way that file or .\"O directory names containing spaces or newlines are correctly handled. \fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを探して、それを消去する。 ファイル名の処理に当たっては、ファイル名やディレクトリ名に空白や改行が含まれていても、適切に扱われるようにしている。 .\"O ---------------------------------------- .\"O ---------------------------------------- .\"O .P .\"O .B find /tmp \-depth \-name core \-type f \-delete .P \fBfind /tmp \-depth \-name core \-type f \-delete\fP .\"O ---------------------------------------- .\"O .\"O Find files named .\"O .B core .\"O in or below the directory .\"O .B /tmp .\"O and delete them, but more efficiently than in the previous example .\"O (because we avoid the need to use .\"O .BR fork (2) .\"O and .\"O .BR exec (2) .\"O to launch .\"O .B rm .\"O and we don't need the extra .\"O .B xargs .\"O process). \fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを探して、それを消去する。 上の例よりもこちらの方が効率的である (なぜなら、 \fBrm\fP を実行するために \fBfork\fP(2) と \fBexec\fP(2) を使わないですむし、そもそも、 \fBxargs\fP のプロセスを必要としないから)。 .\"O ---------------------------------------- .\"O ---------------------------------------- .\"O .P .\"O .nf .\"O .B cut \-d: \-f1 < /etc/passwd | sort | xargs echo .P .nf \fBcut \-d: \-f1 < /etc/passwd | sort | xargs echo\fP .\"O ---------------------------------------- .\"O .\"O .fi .\"O Generates a compact listing of all the users on the system. .\"O . .fi システムの全ユーザーを列挙した簡潔なリストを生成する。 . .\"O ---------------------------------------- .\"O .SH "EXIT STATUS" .\"O .B xargs .\"O exits with the following status: .SH 終了ステータス \fBxargs\fP の終了ステータスは以下のとおりである。 .\"O ---------------------------------------- .\"O .RS .RS .\"O ---------------------------------------- .\"O .IP 0 .\"O if it succeeds .IP 0 成功した。 .\"O ---------------------------------------- .\"O .IP 123 .\"O if any invocation of the command exited with status 1-125 .IP 123 指定したコマンドの実行が 1\-125 のステータスで終了した。 .\"O ---------------------------------------- .\"O .IP 124 .\"O if the command exited with status 255 .IP 124 指定したコマンドが 255 のステータスで終了した。 .\"O ---------------------------------------- .\"O .IP 125 .\"O if the command is killed by a signal .IP 125 指定したコマンドがシグナルによって kill された。 .\"O ---------------------------------------- .\"O .IP 126 .\"O if the command cannot be run .IP 126 指定したコマンドが実行できない。 .\"O ---------------------------------------- .\"O .IP 127 .\"O if the command is not found .IP 127 指定したコマンドが見つからない。 .\"O ---------------------------------------- .\"O .IP 1 .\"O if some other error occurred. .IP 1 上記以外のエラーが起きた。 .\"O ---------------------------------------- .\"O .RE .RE .\"O ---------------------------------------- .\"O ---------------------------------------- .\"O .P .\"O Exit codes greater than 128 are used by the shell to indicate that .\"O a program died due to a fatal signal. .\"O . .P 128 以上の終了ステータスは、致命的なシグナルのせいでプログラムが止まったことを示すために、シェルが使用している。 . .\"O ---------------------------------------- .\"O .SH "STANDARDS CONFORMANCE" .\"O As of GNU xargs version 4.2.9, the default behaviour of .\"O .B xargs .\"O is not to have a logical end-of-file marker. POSIX (IEEE Std 1003.1, .\"O 2004 Edition) allows this. .SH 規格への準拠 GNU xargs version 4.2.9 以来、ファイルの論理的な終端を示す指標 (a logical end\-of\-file marker) を持たないのが、\fBxargs\fP のデフォルトになっている。このことは POSIX (IEEE Std 1003.1, 2004 Edition) で認められている。 .\"O ---------------------------------------- .\"O .P .\"O The \-l and \-i options appear in the 1997 version of the POSIX .\"O standard, but do not appear in the 2004 version of the standard. .\"O Therefore you should use \-L and \-I instead, respectively. .P \-l や \-i オプションは 1997 年版の POSIX 規格には存在するが、 2004 年版の POSIX 規格には存在しない。従って、それぞれ \-L や \-I の方を使うべきである。 .\"O ---------------------------------------- .\"O .P .\"O The \-o option is an extension to the POSIX standard for better .\"O compatibility with BSD. .P \-o オプションは POSIX 規格を拡張したものであり、BSD と互換性を図るためのものである。 .\"O ---------------------------------------- .\"O .P .\"O The POSIX standard allows implementations to have a limit on the size .\"O of arguments to the .\"O .B exec .\"O functions. This limit could be as low as 4096 bytes including the size of the .\"O environment. For scripts to be portable, they must not rely on a .\"O larger value. However, I know of no implementation whose actual limit .\"O is that small. The .\"O .B \-\-show\-limits .\"O option can be used to discover the actual limits in force on the .\"O current system. .\"O . .P POSIX 規格は、実装に当たって、\fBexec\fP 関数に対する引数のサイズに上限を設けることを認めている。 そして、その上限は、環境のサイズも含めて、少なくとも 4096 バイトあればよいことになっている。 移植性のあるスクリプトを書こうと思ったら、これより大きいサイズを当てにしてはいけない。 もっとも、実際の上限がそんなに小さい実装に、筆者は出会ったことがないけれど。 \fB\-\-show\-limits\fP オプションを使えば、使用中のシステムで有効な実際の上限を知ることができる。 . .\"O ---------------------------------------- .\"O .SH "BUGS" .\"O It is not possible for .\"O .B xargs .\"O to be used securely, since there will always be a time gap between the .\"O production of the list of input files and their use in the commands .\"O that .\"O .B xargs .\"O issues. If other users have access to the system, they can manipulate .\"O the filesystem during this time window to force the action of the .\"O commands .\"O .B xargs .\"O runs to apply to files that you didn't intend. For a more detailed .\"O discussion of this and related problems, please refer to the .\"O ``Security Considerations'' chapter in the findutils Texinfo .\"O documentation. The .\"O .B \-execdir .\"O option of .\"O .B find .\"O can often be used as a more secure alternative. .SH バグ \fBxargs\fP を安全に使うことはできません。 なぜなら、入力ファイルの一覧を作成する時間と、 \fBxargs\fP からの実行コマンドがその一覧を使用する時間との間に、 必ず差が発生するためです。 仮に、 他のユーザーがすでにシステムにアクセスしていたとして、 そのユーザーが、 その一瞬の隙にファイルシステムを操作して、\fBxargs\fP が実行するコマンドの動作を、こちらが意図していないファイルに無理矢理向けてしまう、 といったことができてしまいます。この議論や、これに関連する問題については、 findutils に含まれる Texinfo 文書の「Security Considerations」という章でもっと細かく述べているので、 参照してください。 なお、\fBfind\fP の \fB\-execdir\fP オプションは、 より安全な方法として \fBxargs\fP の代わりに利用されることがよくあります。 .\"O ---------------------------------------- .\"O .\"O When you use the .\"O .B \-I .\"O option, each line read from the input is buffered .\"O internally. This means that there is an upper limit on the length .\"O of input line that .\"O .B xargs .\"O will accept when used with the .\"O .B \-I .\"O option. To work around this .\"O limitation, you can use the .\"O .B \-s .\"O option to increase the amount of .\"O buffer space that .\"O .B xargs .\"O uses, and you can also use an extra invocation of .\"O .B xargs .\"O to ensure that very long lines do not occur. .\"O For example: \fB\-I\fP オプションを使うと、標準入力から読み込まれた各行が、 内部的にバッファに保存されます。 つまり、\fB\-I\fP オプションをつけたときに、 \fBxargs\fP が受けつける入力 1 行には、 長さの上限があるということです。 この制限を回避するには、 \fB\-s\fP オプションを使って、 \fBxargs\fP が使用するバッファ領域のサイズを増やして対処します。 もう 1 つの \fBxargs\fP を追加で実行すれば、極端に長い行が発生しないようにできます。たとえば以下です。 .\"O ---------------------------------------- .\"O .P .\"O .B somecommand | xargs \-s 50000 echo | xargs \-I '{}' \-s 100000 rm '{}' .P \fBsomecommand | xargs \-s 50000 echo | xargs \-I '{}' \-s 100000 rm '{}'\fP .\"O ---------------------------------------- .\"O .P .\"O Here, the first invocation of .\"O .B xargs .\"O has no input line length limit .\"O because it doesn't use the .\"O .B \-i .\"O option. The second invocation of .\"O .B xargs .\"O does have such a limit, but we have ensured that it never encounters .\"O a line which is longer than it can handle. This is not an ideal .\"O solution. Instead, the .\"O .B \-i .\"O option should not impose a line length .\"O limit, which is why this discussion appears in the BUGS section. .\"O The problem doesn't occur with the output of .\"O .BR find (1) .\"O because it emits just one filename per line. .\"O . .P \fBxargs\fP の 1 つめの呼び出しでは、入力行の長さに上限はありません。 これは \fB\-I\fP オプションを使っていないからです。 \fBxargs\fP の 2 つめの呼び出しには、上限設定がありますが、 処理できなくなるような 1 行は、入ってこないのが明らかです。こうすることが理想的な解決法というわけではありません。 それよりも、 \fB\-I\fP オプションが長さの制限を設けないでいる方が望ましいことです。 だからこそ、この問題を「バグ」セクションで説明しているわけです。 なおこの問題は、 \fBfind\fP(1) の出力では発生しません。 \fBfind\fP は 1 行に 1 ファイル名しか出力しないためです。 . .\"O ---------------------------------------- .\"O .SH "REPORTING BUGS" .\"O GNU findutils online help: .\"O .br .\"O Report any translation bugs to .SH バグ報告 GNU findutils オンラインヘルプ: .br 翻訳に関するバグ報告 .\"O ---------------------------------------- .\"O .PP .\"O Report any other issue via the form at the GNU Savannah bug tracker: .PP その他の問題について GNU Savannah バグトラッカー経由での報告: .\"O ---------------------------------------- .\"O .RS .\"O .RS .\"O ---------------------------------------- .\"O .RE .\"O General topics about the GNU findutils package are discussed at the .\"O .I bug\-findutils .\"O mailing list: .RE GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: .\"O ---------------------------------------- .\"O .RS .\"O .RS .\"O ---------------------------------------- .\"O .RE .\"O . .RE . .\"O ---------------------------------------- .\"O .SH COPYRIGHT .\"O Copyright \(co 1990-2021 Free Software Foundation, Inc. .\"O License GPLv3+: GNU GPL version 3 or later . .\"O .br .\"O This is free software: you are free to change and redistribute it. .\"O There is NO WARRANTY, to the extent permitted by law. .\"O . .SH 著作権 Copyright \(co 1990\-2021 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. . .\"O ---------------------------------------- .\"O .SH "SEE ALSO" .\"O .BR find (1), .\"O .BR kill (1), .\"O .BR locate (1), .\"O .BR updatedb (1), .\"O .BR fork (2), .\"O .BR execvp (3), .\"O .BR locatedb (5), .\"O .BR signal (7) .SH 関連項目 \fBfind\fP(1), \fBkill\fP(1), \fBlocate\fP(1), \fBupdatedb\fP(1), \fBfork\fP(2), \fBexecvp\fP(3), \fBlocatedb\fP(5), \fBsignal\fP(7) .\"O ---------------------------------------- .\"O .PP .\"O Full documentation .\"O .br .\"O or available locally via: .\"O .B info xargs .PP 完全なドキュメント .br またローカルにおいては \fBinfo xargs\fP により参照できます。 .\"O ----------------------------------------