[JM:01702] [POST: DP] util-linux getopt.1, 引き継ぎ

アーカイブの一覧に戻る
長南洋一 cyoic****@maple*****
2020年 4月 5日 (日) 21:18:16 JST


<STATUS>
stat: DP
ppkg: util-linux
page: getopt.1
date: 2020/04/05
mail: cyoic****@maple*****
name: Chonan Yoichi
</STATUS>

これも佐藤さんとの共訳にさせていただきます。

訳文を決め兼ねているところをいくつか。

○ まず、「説明」の冒頭。

  getopt  is  used  to break up (parse) options in command lines for easy
  parsing by shell procedures, and to check for valid options.   It  uses
  the GNU getopt(3) routines to do this.

  getopt   を使えば、コマンドラインのオプションを分解  (構文解析)  して、
  シェル上の処理による解析作業を容易にしたり、 オプションが有効かどうかを
  チェックしたりすることができる。  getopt  は、そうしたことのために  GNU
  getopt(3) のルーティンを使用している。

    この "parse" を「構文解析」と言ってよいのかどうか。「解析」にとどめる
    べきなのか。Wikipedia によれば、自然言語の構文解析は、「おもに文節間の
    係り受け構造を発見することである」そうですから、オプションとそのオプション
    引き数、それ以外のパラメータを判別する getopt の動作も、構文解析と言える
    のではないかと思うのですが。

    "shell procedures" の訳にも迷っています。プロシージャと言うと、
    プログラミング関係では、関数とかサブルーティンとかとほぼ同じ意味で
    使うこともあるんでしょう。

○ 「説明」の最後のパラグラフ。

  Traditional implementations of getopt(1) are unable to cope with white‐
  space and other (shell-specific) special characters  in  arguments  and
  non-option  parameters.

  従来の getopt(1) の実装では、引き数などのオプションではないパラメータの
  中に、ホワイトスペース  (訳注:  空白、タブ、改行など) や (シェル固有の)
  特殊文字などがあると、それに対処することができなかった。

    この "special characters" というのは、具体的には何のことなんでしょう。
    "*, ?" のような、いわゆるワイルドカード? それとも "$*, $@, $#" のような、
    スペシャルパラメータ? それとも "\a, \t, \n" のようなエスケープシーケンス?
    そして、どういう風に使う場合を想定しているんでしょう。

○ 「構文解析」セクションの最初のパラグラフ。

    長くなるので、引用は省略します。この部分は、シェル関数が唐突に出てきて、
    原文が説明不足な気がします (もっと前に、getopt はシェル関数や
    スクリプトで使うのが普通だと言っておくべきです)。それに、原文の過去形を
    どう理解すればよいかも難しい。私は補足説明を訳文に組み込んだ上で、
    さらに長い訳注を付けてしまいました。原文は大体こういうことを言いたい
    のだろうと思います。

    補足説明や長い訳注を付けたということは、自分は原文をこんな風に理解して
    いますと言い訳をしているわけで、言い換えれば、原文の理解や日本語化に
    自信がないということでもあります。もっとスッキリした解釈があれば、
    うかがいたいと思います。

○ 「互換性」セクション。

  This version of getopt(1) is written to be as compatible as possible to
  other versions.  Usually you can just replace them  with  this  version
  without any modifications, and with some advantages.

  このバージョンの getopt(1) は、できるだけ他のバージョンと互換性があるよ
  うに書かれている。 たいていの場合、他のバージョンの  getopt  をこのバー
  ジョンで置き換えるだけでよく、 既存のシェルスクリプトなどに手を入れる必要は
  ない。さらに、いくつかの利点もある。

    "without any modifications" というのは、こういうことだと思いますが、
    この getopt(1) のソースに手を入れる必要はないということなんでしょうか。

○ 「バグ」セクション。

    ここも引用は省略しますが、長い訳注を付けてしまいました。
    要するに、getopt(1) コマンドの動作が、getopt(3) 関数の動作と
    微妙に違う点をバグと言っているのではないかと思います。バグと言っても、
    不具合ということではなく、関数とは違う独自の仕様ぐらいの意味でしょうが。

    getopt(1) コマンドの実際の動作からすると、「空の任意引き数を、引き数が
    存在しないかのように」と言うより、「引き数が存在しない場合も、空の任意引き数が
    あるかのように」と言った方が正確ではないかと思います。原文はそうなって
    いませんけれど。

添付ファイルの構成は、次のようなものです。

$ tar tzf getopt-2.34.tar.gz 
getopt-2.34/
getopt-2.34/po4a/
getopt-2.34/po4a/man1/
getopt-2.34/po4a/man1/getopt.po
getopt-2.34/po4a/man1/getopt.patch
getopt-2.34/original/
getopt-2.34/original/man1/
getopt-2.34/original/man1/getopt.1
getopt-2.34/draft/
getopt-2.34/draft/man1/
getopt-2.34/draft/man1/getopt.1


なお、この getopt.po は、po4a-translate を実行するとき、以下のように
"-o unknown_macros=untranslated" オプションを付けてやる必要があります。

  $ po4a-translate -f man -m ../../original/man1/getopt.1 -p getopt.po \
  -l getopt.1 -o unknown_macros=untranslated

-- 
長南洋一
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: getopt-2.34.tar.gz
型:         application/octet-stream
サイズ:     28806 バイト
説明:       無し
URL:        <https://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20200405/5a7d5456/attachment-0001.obj>


linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る