[JM:00398] Re: [POST:DO] bash bash.1

Back to archive index

Akihiro MOTOKI amoto****@gmail*****
2011年 9月 15日 (木) 00:16:59 JST


元木です。

更新された部分を中心に読みました。

長南さんとの議論されて結論が出ているた部分は
できるだけ外したつもりです。

また、単純な修正を git からの diff で添付します。
diff は今日の夕方のコミット fd2702 に対するものです。
主に、原文の方の抜けの修正です。

以下、インラインでコメントします。

At Thu, 8 Sep 2011 18:14:33 +0900,
Masakazu Takahashi wrote:

> .\" Updated to 2.04  Sun Apr 1 2001
> .\"    by the members of JM Project (JM****@linux*****)
> .\"       Satoshi Asakawa <asaka****@kanag*****>
> .\"       Shinya Hanataka <hanat****@abyss*****>
> .\"       Akihiro Motoki <mokku****@iname*****>
> .\"       NAKANO Takeo <nakan****@apm*****>
> .\"       Yuichi SATO <sato****@compl*****>
> .\"       Kentaro Shirakata <argra****@ub32*****>
> .\"       TAKEI Nobumitsu <takei****@webma*****>
> .\"       UCHIDA Norihiro <KY4N-****@asahi*****>
> .\"
> .\" Updated to 2.05  Sat 14 Apr 2001
> .\"    by NAKANO Takeo

高橋さんの更新履歴も追記して頂ければと思います。

> .\"O .B Bash
> .\"O is intended to be a conformant implementation of the
> .\"O Shell and Utilities portion of the IEEE POSIX specification
> .\"O (IEEE Standard 1003.1).
> .B bash
> は IEEE POSIX Shell and Tools specification (IEEE Working Group 1003\.1)
> に準拠する実装を目指しています。

原文の方が変更になっています。
Shell and Utilities portion of the IEEE POSIX specification
(IEEE Standard 1003.1)

> .\"O .B Bash
> .\"O can be configured to be POSIX-conformant by default.
> .B Bash
> はデフォルトで POSIX 適合に設定することもできます。

規格には準拠するということが多いので、ここも
「POSIX 準拠に設定することも...」としてはいかがでしょうか。

> .\"O .B Bash
> .\"O also interprets a number of multi-character options.
> .B Bash
> が解釈するオプションには複数の文字からなるものもたくさんあります。

Bash → bash

日本語の場合には、大文字で始める必要はないと思います。

> .B \-\-posix
> .\"O Change the behavior of \fBbash\fP where the default operation differs
> .\"O from the POSIX standard to match the standard (\fIposix mode\fP).
> \fBbash\fP の動作のうち、
> デフォルトの振舞いが POSIX 1003.2 の標準と異なる部分を、
> 標準に適合するように変更します (\fIposix モード\fP)。

原文が変更になっています。

  POSIX 1003.2 の標準 → POSIX 標準

> .TP
> .B \-\-restricted
> .\"O The shell becomes restricted (see
> .\"O .SM
> .\"O .B "RESTRICTED SHELL"
> .\"O below).
> シェルの動作を制限します (後述の
> .SM
> .B 制限付きのシェル
> セクションを参照)。

-r オプションの説明と合わせると分かりやすいです。

  シェルを制限された状態にします。

> .\"O .SH INVOCATION
> .SH 起動
> .\"O A \fIlogin shell\fP is one whose first character of argument zero is a
> .\"O .BR \- ,
> .\"O or one started with the 
> .\"O .B \-\-login
> .\"O option.
> \fIログインシェル(login shell)\fPとは、0 番目の引き数の最初の文字が
> .BR \-
> であるシェル、または
> .B \-\-login
> オプション付きで起動されたシェルのことです。
> .PP
> .\"O An \fIinteractive\fP shell is one started without non-option arguments
> .\"O and without the
> .\"O .B \-c
> .\"O option
> .\"O whose standard input and error are
> .\"O both connected to terminals (as determined by
> .\"O .IR isatty (3)),
> .\"O or one started with the
> .\"O .B \-i
> .\"O option.
> \fI対話的な\fPシェルとは、
> オプションでない引き数がなく、
> 標準入力と標準出力がいずれも端末に接続されていて (これは

原文では、standard input and error に変更されています。

> .\"O .B Bash
> .\"O attempts to determine when it is being run with its standard input
> .\"O connected to a network connection, as when executed by the remote shell
> .\"O daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP.
> .B bash
> は、自分を起動したのがリモートシェルデーモン (通常はリモートシェルデーモン
> \fIrshd\fP またはセキュアシェルデーモン \fIsshd\fP) かどうかを調べます。

原文が変更されています。こんな感じでしょうか。

rshd や sshd によって実行された場合など、標準入力がネットワーク接続に接続された
状態で実行されたかどうかを調べます。

> .\"O If the shell is started with the effective user (group) id not equal to the
> .\"O real user (group) id, and the \fB\-p\fP option is not supplied, no startup
> .\"O files are read, shell functions are not inherited from the environment, the
> .\"O .BR CDPATH ,
> .\"O and
> .\"O .B GLOBIGNORE
> .\"O variables, if they appear in the environment, are ignored,
> .\"O and the effective user id is set to the real user id.

この部分ですが、原文が違ってしまっているようです。
原文の方だけ、SHELLOPTS と BASHOPTS が消えてしまっています。
(CDPATH と GLOBIGNORE だけが残っています)

訳の方は正しいと思います。

> .SH シェルの文法
> .\"O .SS Simple Commands
> .SS 単純なコマンド (Simple Commands)
> .PP
> .\"O A \fIsimple command\fP is a sequence of optional variable assignments
> .\"O followed by \fBblank\fP-separated words and redirections, and
> .\"O terminated by a \fIcontrol operator\fP.  The first word
> .\"O specifies the command to be executed, and is passed as argument zero.
> .\"O The remaining words are passed as arguments to the invoked command.
> 単純なコマンド (\fIsimple command\fP) とは、
> 変数の代入を並べたもの (これは省略可能です) の後に、
> ブランク区切りの単語とリダイレクションを記述し、
> 最後に制御演算子を置いたものです。
> 最初の単語は実行するコマンドを指定します。

", and is passed as argument zero" に対応する部分が抜けています。

> .\"O .SS Pipelines
> .SS パイプライン (Pipeline)
> .PP
> .\"O A \fIpipeline\fP is a sequence of one or more commands separated by
> .\"O one of the control operators
> .\"O .B |
> .\"O or \fB|&\fP.
> \fIパイプライン (pipeline)\fPは、記号
> .B |
> または \fB|&\fP で区切った 1 つ以上のコマンド列です。

control operator の訳が他の箇所では「制御演算子」となっていますので、
ここも合わせた方がよいかと。

> .\"O The format for a pipeline is:
> パイプラインのフォーマットを以下に示します:
> .RS
> .PP
> [\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ]
> .RE
> .PP
> .\"O The standard output of
> .\"O .I command
> .\"O is connected via a pipe to the standard input of
> .\"O .IR command2 .
> .\"O This connection is performed before any redirections specified by the
> .\"O command (see
> .\"O .SM
> .\"O .B REDIRECTION
> .\"O below).
> .I command
> の標準出力は
> .IR command2
> の標準入力に接続されます。

"via a pipe" が原文に追加されています。

> \fIリスト (list)\fP とは、1つ以上のパイプラインを演算子
> .BR ; ,
> .BR & ,
> .BR && ,
> .BR || ,
> のいずれかで区切って並べ、最後に
> .BR ; ,
> .BR & ,
> .BR <newline> .
> のいずれか (これは省略可能です) を置いたものです。

「.BR || ,」と「.BR <newline> .」の最後のカンマとピリオドが不要です。

括弧内の「これは省略可能です」がどこに係るのか分かりにくかったです。
「最後に〜のいずれかを置いたもの」の前で一度文を切ってしまうのはいかがでしょうか。
「〜で区切って並べたものです。パイプラインの最後に〜のいずれかを置いてもよい。」
のような感じを考えました。

> .PP
> .\"O Of these list operators,
> .\"O .B &&
> .\"O and
> .\"O .B ||
> .\"O have equal precedence, followed by
> .\"O .B ;
> .\"O and
> .\"O .BR & ,
> .\"O which have equal precedence.
> リスト演算子のうち、
> .B &&
>> .B ||
> の優先順位は同じです。これらの次に、
> .B ;
>> .BR & ,
> が同じ優先順位で続きます。

ここも「.BR & ,」の最後のカンマが不要です。

> .\"O An OR list has the form
> .\"O .RS
> .\"O .PP
> .\"O \fIcommand1\fP \fB||\fP \fIcommand2\fP
> .\"O .PP
> .\"O .RE
> .\"O .PP
> .\"O .I command2
> .\"O is executed if and only if
> .\"O .I command1
> .\"O returns a non-zero exit status.
> OR リストは
> .RS
> .PP
> \fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP

原文の方は「\fB\(bv\(bv\fP」が「\fB||\fP」に変更されています。

> .PP
> .RE
> .PP
> という形式であり、
> .I command1
> が 0 以外の終了ステータスを返した場合に限り
> .I command2
> が実行されます。

> .\"O .SS Compound Commands
> .SS 複合コマンド(Compound Commands)

括弧の前に空白がありません。

> .\"O Word splitting and pathname expansion are not performed on the words
> .\"O between the \fB[[\fP and \fB]]\fP; tilde expansion, parameter and
> .\"O variable expansion, arithmetic expansion, command substitution, process
> .\"O substitution, and quote removal are performed.
> .\"O Conditional operators such as \fB\-f\fP must be unquoted to be recognized
> .\"O as primaries.
> 単語分割とパス名展開は \fB[[\fP と \fB]]\fP
> の間の単語に対しては行われません。
> チルダ展開、パラメータと変数の展開、算術式展開、コマンド置換、
> プロセス置換、クォート除去は実行されます。
> \fB\-f\fP などの条件演算子は最初に認識されるため、クォートしてはいけません。

最後の文ですが、
   -f などの条件演算子は、プライマリと認識させるためには、クォートしてはいけません。
ではないでしょうか。

> .if t .sp 0.5
> .if n .sp 1
> .\"O When used with \fB[[\fP, the \fB<\fP and \fB>\fP operators sort
> .\"O lexicographically using the current locale.
> \fB[[\fP においては、\fB<\fP 演算子と \fB>\fP 演算子は、
> 現在のロケールにおける辞書順を表します。

原文が説明不足なのですが、< や > の演算子なので、大小比較を行うはずです。
現在のロケールに置ける辞書順での比較を行うということでしょうか。

> .if t .sp 0.5
> .if n .sp 1
> .\"O When the \fB==\fP and \fB!=\fP operators are used, the string to the
> .\"O right of the operator is considered a pattern and matched according
> .\"O to the rules described below under \fBPattern Matching\fP.
> .\"O If the shell option
> \fB==\fP 演算子と \fB!=\fP 演算子が使われたとき、
> 演算子の右の文字列はパターンと解釈され、
> 後述の\fBパターンマッチング\fPで説明する規則に従ってマッチングが行われます。
> シェルオプション
> .B nocasematch
> .\"O .B nocasematch
> .\"O is enabled, the match is performed without regard to the case
> .\"O of alphabetic characters.
> .\"O The return value is 0 if the string matches (\fB==\fP) or does not match
> .\"O (\fB!=\fP) the pattern, and 1 otherwise.
> .\"O Any part of the pattern may be quoted to force it to be matched as a
> .\"O string.
> が有効であれば、
> アルファベットの大文字と小文字を考慮せずにマッチングが行われます。
> 返り値は、文字列がマッチしたとき (\fB==\fP) またはマッチしなかったとき
> (\fB!=\fP) に 0 となり、そうでない場合に 1 となります。

返り値の説明が少し分かりにくいかなと感じました。
「(==)」「(!=)」を「(== の場合)」、「(!= の場合)」のようにするのは
いかがでしょうか。

> パターン中のどの部分でも文字としてマッチングさせるにはクォートします。

  パターン中のどの部分でも、クォートすることで、強制的に文字として
  マッチさせることができます。
などはいかがでしょうか。

> \fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
> .\"O First, the arithmetic expression \fIexpr1\fP is evaluated according
> .\"O to the rules described below under
> .\"O .SM
> .\"O .BR "ARITHMETIC EVALUATION" .
> .\"O The arithmetic expression \fIexpr2\fP is then evaluated repeatedly
> .\"O until it evaluates to zero.
> .\"O Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is
> .\"O executed and the arithmetic expression \fIexpr3\fP is evaluated.
> .\"O If any expression is omitted, it behaves as if it evaluates to 1.
> .\"O The return value is the exit status of the last command in \fIlist\fP
> .\"O that is executed, or false if any of the expressions is invalid.
> 最初に、算術式\fIexpr1\fPが、後述の
> .SM
> .BR 算術式評価
> で説明される規則に従って評価されます。
> 次に、算術式\fIexpr2\fPがゼロになるまで繰り返し評価されます。
> 算術式\fIexpr2\fPの評価結果がゼロでなければ、そのたびごとに\fIlist\fPが実行され、
> 算術式\fIexpr3\fPが評価されます。

expr2 の前後にスペースが入っていません。

> どの算術式も省略された場合は、
> 評価結果が 1 とみなされた場合のように振舞います。
> 返却ステータスは \fIlist\fP 中で実行された
> 最後のコマンドの終了ステータスとなりますが、
> 算術式のいずれかが無効である場合には不正な値となります。
> .TP
> \fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
> .\"O The list of words following \fBin\fP is expanded, generating a list
> .\"O of items.  The set of expanded words is printed on the standard
> .\"O error, each preceded by a number.  If the \fBin\fP
> .\"O \fIword\fP is omitted, the positional parameters are printed (see
> .\"O .SM
> .\"O .B PARAMETERS
> .\"O below).  The
> .\"O .SM
> .\"O .B PS3
> .\"O prompt is then displayed and a line read from the standard input.
> .\"O If the line consists of a number corresponding to one of
> .\"O the displayed words, then the value of
> .\"O .I name
> .\"O is set to that word.  If the line is empty, the words and prompt
> .\"O are displayed again.  If EOF is read, the command completes.  Any
> .\"O other value read causes
> .\"O .I name
> .\"O to be set to null.  The line read is saved in the variable
> .\"O .SM
> .\"O .BR REPLY .
> .\"O The
> .\"O .I list
> .\"O is executed after each selection until a
> .\"O .B break
> .\"O command is executed.
> .\"O The exit status of
> \fBin\fP に続く単語のリストが展開され、要素のリストが生成されます。
> 展開された単語の集合が番号付きで標準エラー出力に出力されます。
> 「\fBin\fP \fIword\fP」が省略された場合、
> 位置パラメータが出力されます (後述の
> .SM
> .B パラメータ
> を参照)。続いて
> .B PS3
> が表示され、標準入力から 1 行の読み込みが行われます。

原文と同じように、「PS3 プロンプト」のように、
「プロンプト」を入れてはいかがでしょうか。

> \fBwhile\fP \fIlist-1\fP; \fBdo\fP \fIlist-2\fP; \fBdone\fP
> .PD 0
> .TP
> \fBuntil\fP \fIlist-1\fP; \fBdo\fP \fIlist-2\fP; \fBdone\fP
> .PD
> .\"O The \fBwhile\fP command continuously executes the list
> .\"O \fIlist-2\fP as long as the last command in the list \fIlist-1\fP returns
> .\"O an exit status of zero.  The \fBuntil\fP command is identical
> .\"O to the \fBwhile\fP command, except that the test is negated;
> .\"O .I list-2
> .\"O is executed as long as the last command in
> .\"O .I list-1
> .\"O returns a non-zero exit status.
> \fBwhile\fP コマンドは、\fIlist-1\fP 中の最後のコマンドが終了ステータス
> 0 を返すまで、繰り返して \fBdo\fP \fIlist-2\fP を実行します。\fBuntil\fP

\fBdo\fP は不要だと思います。変更前の原文にはありましたが、
今は削除されています。

> コマンドは \fBwhile\fP コマンドとほぼ同じですが、
> 評価の条件が否定となる点が異なります。
> .I list-2
>> .I list-1
> 中の最後のコマンドが
> 0 以外の終了ステータスを返す限りずっと実行されます。

> .\"O The file descriptors can be utilized as arguments to shell commands
> .\"O and redirections using standard word expansions.
> .\"O The process ID of the shell spawned to execute the coprocess is
> .\"O available as the value of the variable \fINAME\fP_PID.
> .\"O The \fBwait\fP
> .\"O builtin command may be used to wait for the coprocess to terminate.
> ファイル・ディスクリプターは、標準的な単語展開により、
> シェルのコマンドの引き数やリダイレクションに指定できます

文末尾の「。」がありません。

> コプロセスの実行で生成されたシェルのプロセス ID は、変数
> \fINAME\fP_PID の値になります。
> コプロセスの終了を待つには、組み込みコマンド \fBwait\fP を使います。
> .PP
> .\"O The return status of a coprocess is the exit status of \fIcommand\fP.
> コプロセスの返却ステータスは、\fIcommand\fP の終了ステータスです。
> .\"O The exit status of a function definition is zero unless a syntax error
> .\"O occurs or a readonly function with the same name already exists.
> .\"O When executed, the exit status of a function is the exit status of the
> .\"O last command executed in the body.  (See
> .\"O .SM
> .\"O .B FUNCTIONS
> .\"O below.)
> 関数定義の終了ステータスは、文法エラーが置きた場合や、
> 読み込み専用の関数が同じ名前で定義れていた場合を除き、0 です。
> 
> 関数を実行したときの終了ステータスは、実体の中で最後に実行されたコマンドの終了ステータスになります (後述の
> .SM
> .B 関数
> を参照)

一番最後の句点がありません。

以上です。
-- 
Akihiro MOTOKI <amoto****@gmail*****>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: bash.1-motoki.diff
型:         application/octet-stream
サイズ:     5197 バイト
説明:       無し
下載 



linuxjm-discuss メーリングリストの案内
Back to archive index