[JM:00087] Re: [POST:DP] GNU_findutils xargs.1

Zurück zum Archiv-Index

長南洋一 cyoic****@maple*****
2010年 12月 27日 (月) 22:19:33 JST


長南です。

24 日か 25 日に原稿を送って、クリスマスプレゼントと洒落ようと
思っていたのですが、なかなか思うように行かないものです。
投稿が 26 日にずれて、売れ残りのケーキになってしまいました。

例によって、質問というか、相談というか、言い訳というか、です。
たくさんあるので二回に分けます。

まず、引用は省略しますが、「説明」の最初のパラグラフが、自分でも
いまいち気に入っていません。「xargs は、コマンドラインが
長くなりすぎるときは、標準入力から受け取った引き数を分割して
実行する」ということを、ここで言っておいた方がよいと思うのです。
そうでないと、「コマンドを一回以上実行する」という説明がちょっと
唐突になりますし、「コマンドラインが長すぎてエラーになることがない」
というのが xargs の売り物の一つなんでしょうから。でも、そのために
くどい文章になってしまいました。もっとすっきりした案があったら、
お教えください。

  .\"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.
  指定したコマンドの実行が終了ステータス 255 で終了することがあれば、
  .B xargs
  は即座にストップして、それ以上入力を読み込まない。また、このとき、
  エラーメッセージを標準エラーに表示する。

any がうまく訳せませんでした。いっそ invocation を抜かして、

  指定したコマンドに終了ステータス 255 で終了するものがあれば

あるいは、the を「指定した」と訳すのをやめて、invocation を生かし、

  呼び出したコマンドに終了ステータス 255 で終了するものがあれば
  (呼び出したコマンドがステータス 255 で終了することがあれば)

にしましょうか。要するに、「コマンドは一回以上実行されることがある」
ということを臭わせるように訳したい、ということなんですが。

なお、これは、「返り値」セクションの訳とも関係があります。
同じ英文は同じ訳文にしなければならないということもありませんが、
できたら、そうしたい。

  .\"O .B xargs
  .\"O exits with the following status:
  .B xargs 
  が終了するときの返り値は以下のとおり。
  .\"O .nf
  .\"O 0 if it succeeds
  .\"O 123 if any invocation of the command exited with status 1-125
  .\"O 124 if the command exited with status 255
  .\"O 125 if the command is killed by a signal
  .\"O 126 if the command cannot be run
  .\"O 127 if the command is not found
  .\"O 1 if some other error occurred.
  .\"O .fi
  .P
  .nf
  0 成功した。
  123 指定したコマンドの実行が 1-125 の返り値で終了した。
  124 指定したコマンドが返り値 255 で終了した。
  125 指定したコマンドがシグナルによって kill された。
  126 指定したコマンドが実行できない。
  127 指定したコマンドが見つからない。
  1 上記以外のエラーが起きた。

上に引用した「説明」セクションの文章からして、返り値 124 や
125 も「any invocation of」が省略されているのだと思います。
わたしの返り値 123 の訳は、any を省略していますが、これで
事実上問題がないなら、「実行」も省略できるのではないか。
そう考えるのですが、自信がありません。

「呼び出したコマンド」という訳は、返り値 126 や 127 に使えなさ
そうですし …… いや、使えるかも。
 
ここではセクション名に引かれて、「返り値」と訳しましたが、
「説明」セクションでは「終了ステータス」と訳していました。
find のマニュアルを含めて、統一した方がよさそうです。
著者は exit status を使っていますから、セクション名だけ
「返り値」を残して、原則「(終了) ステータス」にしましょうか。

それから、「返り値」セクションのすぐ下の部分ですが、a program が
よくわかりません。

  .\"O Exit codes greater than 128 are used by the shell to indicate that 
  .\"O a program died due to a fatal signal.
  .P
  128 以上の返り値は、致命的なシグナルのせいでプログラムが
  止まったことを示すために、シェルによって使用される。

これだけだと、program は xargs のことではないかと考えられます。
しかし、xargs なら、a ではなく、the なのではないか。

-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 --null を使うように、実行するプログラムを
  組み立てる方が望ましい。

「返り値」セクションの a program も同じように考えてよいのかも
しれません。でも、コマンドラインをプログラムということがあるんで
しょうか。英語ではあるとしても、日本語ではどうなんでしょう。

-- 
長南洋一




linuxjm-discuss メーリングリストの案内
Zurück zum Archiv-Index