Akihiro MOTOKI
amoto****@gmail*****
2011年 1月 13日 (木) 03:00:55 JST
もときです。お疲れ様です。 # any invocation ... は難しいので、それ以外のところです。 > まず、引用は省略しますが、「説明」の最初のパラグラフが、自分でも > いまいち気に入っていません。「xargs は、コマンドラインが > 長くなりすぎるときは、標準入力から受け取った引き数を分割して > 実行する」ということを、ここで言っておいた方がよいと思うのです。 > そうでないと、「コマンドを一回以上実行する」という説明がちょっと > 唐突になりますし、「コマンドラインが長すぎてエラーになることがない」 > というのが xargs の売り物の一つなんでしょうから。でも、そのために > くどい文章になってしまいました。もっとすっきりした案があったら、 > お教えください。 これは難しいですね。 意訳に近いですが、こんな案を考えてみました。 長南さんが書かれているように、訳注があった方が ぐっと分かりやすくなると思いました。 xargsは、空白や改行で区切られた一連の項目群を標準入力から読み込み (空白はダブルクォート、シングルクォート、バックスラッシュによって 保護できる)、読み込んだ一連の項目群を引き数にして、指定した command を 実行する (デフォルトのコマンドは/bin/echoである)。 (コマンドライン長の上限を越える場合や、オプションによる特別な指定が ある場合は、項目群を適宜分割して command を実行するため)、 指定した command が複数回実行される場合もある。 [...] > ここではセクション名に引かれて、「返り値」と訳しましたが、 > 「説明」セクションでは「終了ステータス」と訳していました。 > find のマニュアルを含めて、統一した方がよさそうです。 > 著者は exit status を使っていますから、セクション名だけ > 「返り値」を残して、原則「(終了) ステータス」にしましょうか。 コマンドの場合には、返り値というよりは、exit code とか exit status というのが普通ですね。セクション 1 はコマンドなので、章の名前も 「返り値」でなく「終了ステータス」でもいいかなと思い始めました。 私は、セクション 2 (システムコール) や セクション 3 (ライブラリ関数) の manpage ばかり相手にして来たので、これまで気にならなかったようです。 > -d オプションの説明でも program という言葉が使われています。 > > .\"O (省略) This can be used when the input consists of simply > .\"O newline-separated items, although it is almost always better to design > .\"O your program to use > .\"O .B \-\-null > .\"O where this is possible. > > この場合、design your program と言っていますから、program は > xargs ではないでしょう。では、xargs の入力を生成するプログラム > なのか。だとすると、そのプログラムが --null を使うというのが > おかしくなります。--null は xargs のオプションなんですから。 > そこで、わたくしは、your program を xargs を含むコマンドライン > (パイプラインというんでしたっけ) と考えて、次のように訳しました。 xargs への入力を生成するプログラムのことではないでしょうか。 xargs に対して、わざわざ -d delimiter のように特殊な区切り文字を 指定させるくらいなら、前段のプログラムの出力の区切り文字の方を工夫して、 受け側の xargs では --null オプションで対処できるようにした方が いいだろう、と著者は言いたいのだと解釈しました。 > 入力が、項目を区切るのが改行のみであるような単純な構成の場合なら、 > このオプションを利用してもよいが、ほとんどたいていの場合、 > なるべくなら、xargs --null を使うように、実行するプログラムを > 組み立てる方が望ましい。 それでは。 -- Akihiro MOTOKI <amoto****@gmail*****>