--- xargs.1.orig	2019-04-01 21:24:05.632697728 +0900
+++ xargs.1	2019-04-01 21:24:25.531198601 +0900
@@ -4,6 +4,37 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
+.\"    This file documents the GNU utilities for finding files that match
+.\" certain criteria and performing various operations on them.
+.\"
+.\"    Copyright (C) 1994 Free Software Foundation, Inc.
+.\"
+.\"    Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\"    Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\"    Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.\" Japanese Version Copyright (c) 1997 NAKANO Takeo
+.\"   and 2011 Chonan Yoichi,
+.\"         all rights reserved.
+.\" Translated Thu May 11 1997 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" Modified Fri 14 Aug 1998 by NAKANO Takeo -- bug fixes.
+.\" Updated and modified (findutils-4.4.2) Fri Jan 28 12:28:44 JST 2011
+.\"         by Chonan Yoichi <cyoichi@maple.ocn.ne.jp>
+.\" Updated and modified (findutils-4.6.0) Sat Mar  3 11:18:22 JST 2018
+.\"         bu Chonan Yoichi
+.\"
+.\"WORD    end of file string    ファイル終端文字列
+.\"
 .TH XARGS 1   
 .SH 名前
 xargs \- 標準入力を読み込んでコマンドラインを作成し、それを実行する
@@ -21,6 +52,12 @@
 [\fB\-\-interactive\fP] [\fB\-\-verbose\fP] [\fB\-\-exit\fP] [\fB\-\-no\-run\-if\-empty\fP]
 [\fB\-\-arg\-file\fP=\fIfile\fP] [\fB\-\-show\-limits\fP] [\fB\-\-version\fP] [\fB\-\-help\fP]
 [\fIcommand\fP [\fIinitial\-arguments\fP]]
+.PP
+[\fB訳注\fP]: 見やすくするために、整理して単純化すると:
+.PP
+.B xargs
+[\fIoptions\fR]
+[\fIcommand\fR [\fIinitial-arguments\fR]]
 .hy
 .SH 説明
 このマニュアルページは、GNU 版 \fBxargs\fP の使用法を説明している。
@@ -107,6 +144,52 @@
 が現れるすべての箇所を、標準入力から読み込んだ名前で置き換える。
 なお、標準入力中にクォートされていない空白があっても、それは入力項目の区切りにはならない。
 区切りの指標は改行文字だけになるのだ。\fB\-x\fP と \fB\-L\fP 1 が自動的に設定される。
+.RS
+.IP "[\fB訳注\fP]:" 8
+もう少し詳しく説明した方がよいだろう。普通、ユーザが \fBxargs\fP 
+で実行するコマンドに引き数 (それが \fIinitial-arguments\fP である。上記書式を参照) 
+を指定した場合、標準入力から読み込まれた項目群は、\fIinitial-arguments\fP 
+の後ろにどんどん追加されて行く。それに対して、\fB\-I\fP \fIreplace-str\fP 
+オプションを使用した場合は、次の二点が異なっている。
+一つは、標準入力は改行で分割され、その 1 行 1 行が、コマンド 1 回の実行につき 
+1 個づつ使用されること (それが \fB\-L\fP 1 ということだ)。
+もう一つは、その 1 行が 1 項目として扱われ (\fB\-L\fP 1 
+を単独で使った場合とは、そこが違う)、その 1 項目が、\fIinitial-arguments\fP 
+の後ろに追加されるのではなく、\fIinitial-arguments\fP 中の文字列 
+\fIreplace-str\fP が現れるすべての位置に埋め込まれることだ。以下の例では、
+\(dq{}\(dq が \fIreplace-str\fP であり、\(dq{} is {}\(dq の部分がコマンド 
+\fBecho\fP に対する \fIinitial-arguments\fP である。\fB\-I\fP 
+の直後の空白は、あってもなくてもよく、\fIreplace-str\fP は 
+\(dq{}\(dq 以外の文字列でもよい。なお \(dq{}\(dq はクォートした方がよいかもしれない。
+
+.nf
+$ echo -e "AAA BBB\\nCCC\\nDDD" |xargs -I{} echo {} is {}
+AAA BBB is AAA BBB
+CCC is CCC
+DDD is DDD
+.fi
+
+入力項目を区切っているデリミタは改行だけであり、空白は項目の区切りとして機能していないのがお分かりになるだろう。
+別の言い方をすると、\fB\-I\fP では、各行は 1 行全体が事実上クォートされてコマンドに渡される 
+(注意: \fB\-L\fP 1 にそんな作用はない)。
+従って、\fB\-I\fP オプションを使えば、空白を含むファイル名を処理できるということになる。
+たとえば、カレントディレクトリに \(dqnospace\(dq と \(dqhave space\(dq 
+というファイルがあるとしよう。
+
+.nf
+$ ls |xargs file
+have:    cannot open `have' (No such file or directory)
+space:   cannot open `space' (No such file or directory)
+nospace: ASCII text
+$ ls |xargs -L1 file
+have:  cannot open `have' (No such file or directory)
+space: cannot open `space' (No such file or directory)
+nospace: ASCII text
+$ ls |xargs -I{} file {}
+have space: UTF-8 Unicode text
+nospace: ASCII text
+.fi
+.RE
 .TP 
 .PD
 \fB\-i\fP[\fIreplace\-str\fP], \fB\-\-replace\fP[\fI=replace\-str\fP]
@@ -118,6 +201,27 @@
 1 コマンドラインにつき最大 \fImax\-lines\fP 行の (空行ではない) 入力行を使用する。
 入力行の行末に空白文字が付いていると、その行は次の入力行に論理的に続いていることになる。
 自動的に \fB\-x\fP が指定される。
+.RS
+.IP "[\fB訳注\fP]:" 8
+\fB\-n\fP オプションとの違いに注意。
+「行末に空白文字」云々については、以下の 3 番目の例を他のものと比較していただきたい。
+コマンドの実行回数がわかるように、\fBecho\fP に \fIinitial-argument\fP 
+を付けてみた (代わりに \fB\-t\fP オプションを使ってもよかったかもしれない)。
+なお、デリミタをヌル文字にしたときや、\fB\-\-delimiter\fP 
+で指定したときの動作がどうなるかは、ご自分で試してみていただきたい。
+
+.nf
+$ echo AAA BBB CCC |xargs -L1 echo "line: "
+line:  AAA BBB CCC
+$ echo -e "AAA\\nBBB\\nCCC" |xargs -L1 echo "line: "
+line:  AAA
+line:  BBB
+line:  CCC
+$ echo -e "AAA \\nBBB\\nCCC" |xargs -L1 echo "line: "
+line:  AAA BBB
+line:  CCC
+.fi
+.RE
 .TP 
 .PD
 \fB\-l\fP[\fImax\-lines\fP], \fB\-\-max\-lines\fP[=\fImax\-lines\fP]
@@ -284,6 +388,11 @@
 .SH バグ
 \fB\-L\fP オプションと \fB\-I\fP オプションを組み合わせても、うまく行かない。
 組み合わせて使えた方がよいのかもしれないが。
+.IP "[\fB訳注\fP]:" 8
+\fB\-I\fP オプションの説明にあるように、\fB\-I\fP \fIreplace\-str\fP を指定すると、
+\fB\-L\fP 1 が自動的に設定される。だから、ここで言っているのは、現状では 
+\fB\-L\fP 2 や \fB\-L\fP 3 を \fB\-I\fP 
+と一緒に使っても、期待する結果は得られないということだろう。
 .P
 \fBxargs\fP を安全に使うことは不可能である。なぜなら、入力されるファイル名のリストを生成する時間と \fBxargs\fP
 が実行するコマンドがそれを使用する時間との間には、必ず時間差があるからだ。
@@ -317,3 +426,19 @@
 \fIbug\-findutils\fP メーリングリストにお出しになればよい。
 メーリングリストに参加するには、\fIbug\-findutils\-request@gnu.org\fP 宛に
 E メールを送っていただきたい。
+.SH 翻訳について
+この翻訳は findutils-4.6.0 所収の xargs.1 の翻訳である。
+お手元の findutils は、もっと新しいバージョン、たとえば 4.7.0-git
+になっているかもしれない。だが、4.7.0 は開発中の版なので、manpage 
+も変化し続けており、現時点で最新の 4.7.0 
+のマニュアルを翻訳しても、お手元の英語マニュアルとは内容が微妙に違うかもしれないのだ。
+バージョンが同じ 4.7.0 なのに、それでは紛らわしい。そこで、あえて現在の安定版、4.6.0 
+のマニュアルを底本にした。
+.PP
+ご参考までに書いておくと、2017/06/09 以降の 4.7.0-git の \fBxargs\fP 
+には、\fB\-o\fP (\fB\-\-open\-tty\fP) というオプションが追加されている。4.7.0-git 
+の \fBman xargs\fP によれば、「コマンドを実行する前に、子プロセスで標準入力を 
+/dev/tty として再オープンする」というものである。そうした最近のバージョンでは 
+\fB\-o\fP オプションを使えば、たとえば "find . -name '*.txt~' | xargs -o rm -i" 
+といったことが可能になるようだ。失敗しても困らないファイルでお試しいただきたい。
+(2018/03/03)
