[JM:00503] Re: [POST:DO] bash bash.1 (EXPANSION 1)

Back to archive index

長南洋一 cyoic****@maple*****
2011年 11月 16日 (水) 20:53:55 JST


長南です。

「展開」セクションの「ブレース展開」と「チルダ展開」です。
「パラメータの展開」が長くなりそうなので、分離しました。

> .\"O Expansion is performed on the command line after it has been split into
> .\"O words.  There are seven kinds of expansion performed:

> 展開はコマンドラインが単語へ分割された後に
> (コマンドライン上で) 行われます。行われる展開は
> 7 種類あります:

元木さんが [JM:00470] で指摘していらっしゃるコロンの問題です。
以下に項目を列挙したり、実例を出したりするとき、その印として
文の終わりに使われているコロンですが、わたしがこれまでにチェック
してきた部分にもたくさん出てきましたし、この後にも何度も出てきます
(前の方をざっと見直しておいてください)。わたしとしては、コロンの後に
行がえがある場合には、使い方が一貫していれば、コロンを使っても、
丸に書き換えても、どちらでもよいと思います。しかし、この箇所のように、
行がえのないときのコロンは、日本語として美しくありませんし、丸でも
ほぼ同じ働きをします (どうしても必要なら、「すなわち」とか「たとえば」
という言葉を補えばよいわけですし)。丸に変更することに賛成します。

> .\"O .IR "brace expansion" ,
> .\"O .IR "tilde expansion" ,
> .\"O .IR "parameter and variable expansion" ,
> .\"O .IR "command substitution" ,
> .\"O .IR "arithmetic expansion" ,
> .\"O .IR "word splitting" ,
> .\"O and
> .\"O .IR "pathname expansion" .
> .IR "ブレースの展開 (brace expansion)" ,
> .IR "チルダの展開 (tilde expansion)" ,
> .IR "パラメータと変数の展開 (parameter and variable expansion)" ,
> .IR "コマンド置換 (command substitution)" ,
> .IR "算術式展開 (arithmetic expansion)" ,
> .IR "単語の分割 (word splitting)" ,
> .IR "パス名の展開 (pathname expansion)" 。

次にあげる部分と較べていただくとわかりますが、「ブレースの展開」
「チルダの展開」「単語の分割「パス名の展開」が、「ブレース展開」
などと「の」がなくなっています。サブセクション名も「の」のない方が
大部分ですが、「単語の分割」だけは、サブセクションも「単語の分割」
です。まあ、別に統一する必要もありませんが、指摘しておきます。

# このへん、下線を引くのは「ブレースの展開」などだけにして、カッコの
# 部分は下線なしにした方が、重要語句が引き立って、読みやすいと思う
# のですが、そうすると、ほかの部分も書き換えなければならないし、
# 大変でしょうね。だいたい、こんなふうにすればよさそうですが。
#
# .I "ブレースの展開"
# (brace expansion),
#     ---- (中略) ----
# .I "パス名の展開"
# (pathname expansion)。

> .\"O The order of expansions is: brace expansion, tilde expansion,
> .\"O parameter, variable and arithmetic expansion and
> .\"O command substitution
> .\"O (done in a left-to-right fashion), word splitting, and pathname
> .\"O expansion.
> 展開の順序は次のようになります: ブレース展開、チルダ展開、パラメータ・
> 変数・算術式展開、コマンド置換 (左から右へ)、単語分割、パス名展開。

ここも、列挙のコロン。

> .\"O Only brace expansion, word splitting, and pathname expansion
> .\"O can change the number of words of the expansion; other expansions
> .\"O expand a single word to a single word.
> .\"O The only exceptions to this are the expansions of
> .\"O "\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP"
> .\"O as explained above (see
> .\"O .SM
> .\"O .BR PARAMETERS ).
> 展開した部分の単語の数が変化することがあるのは、ブレース展開、
> 単語の分割、パス名展開だけです。ほかの展開では、
> 1 つの単語は 1 つの単語に展開されます。
> この規則の唯一の例外は先に説明した
>  "\fB$@\fP" と "\fB${\fP\fIname\fP\fB[@]}\fP" の展開 (
> .SM
> .B パラメータ
> を参照) だけです。

"\fB$@\fP" の頭に余計な空白があります。

> .SS ブレース展開

> .\"O .I "Brace expansion"
> .\"O is a mechanism by which arbitrary strings
> .\"O may be generated.  This mechanism is similar to
> .\"O \fIpathname expansion\fP, but the filenames generated
> .\"O need not exist.  Patterns to be brace expanded take
> .\"O the form of an optional
> .\"O .IR preamble ,
> .\"O followed by either a series of comma-separated strings or
> .\"O a sequence expression between a pair of braces, followed by
> .\"O an optional
> .\"O .IR postscript .
> .\"O The preamble is prefixed to each string contained
> .\"O within the braces, and the postscript is then appended
> .\"O to each resulting string, expanding left to right.
> .I "ブレース展開 (brace expansion)"
> を使うと、任意の文字列を生成できます。この機構は
> \fIパス名展開\fPに似ていますが、
> 生成されたファイル名が実在する必要はありません。
> ブレース展開されるパターンは、
> .IR "前置部分 (preamble: 省略可能)" 、
> 対になるブレースで囲んだコンマ区切りの文字列またはシーケンス式、
> .I 後置部分 (postscript: 省略可能)
> を順に並べたものです。
> 前置部分はブレース内にある文字列それぞれの先頭部分に追加され、
> 後置部分は左から右に順に展開されて得られた
> それぞれの文字列の末尾に追加されます。

" This mechanism is similar to pathname expansion" ですが、mechanism
(要するにブレース展開のこと) を「機構」と訳すのは、辞書的には正しいに
しても、ちょっと固すぎる気がしますし、ピンと来ません。何かよい訳語が
ないでしょうか。今思いついたのですが、「展開」と訳しておけばよいのかも
しれません。あるいは、「機能」はどうでしょうか。

  ブレース展開を使うと、任意の文字列を生成できます。この機能 (展開) は
  パス名展開に似ていますが ...

「先頭部分に追加され」。「追加」というのは、後ろに付けることをいう
のだと思います。

> .\"O A sequence expression takes the form
> .\"O \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP,
> .\"O where \fIx\fP and \fIy\fP are either integers or single characters,
> .\"O and \fIincr\fP, an optional increment, is an integer.

> シーケンス式は
> \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP
> の形になります。\fIx\fP と \fIy\fP は整数または 1 つの文字で、
> 省略可能な \fIincr\fP は整数です。

"and \fIincr\fP, an optional increment, is an integer." の increment が
訳文では省略されていますが、書式中の incr の意味を説明しているのですから、
訳出するべきだ思います。ここで increment を訳しておけば、以下の
「increment が与えられると」などでその訳語が使えますし。

たとえば、「省略可能な差分である incr は整数です」あるいは「incr
(省略可能な差分) は整数です」はどうでしょう。「差分」の後ろに
(increment) を入れても、よいと思います。

「差分」が正しい用語かどうかは、わかりません。「増加分」もありそうです。
decrement の場合も考慮に入れると、「増減分」も考えられます。

> .\"O When integers are supplied, the expression expands to each number between
> .\"O \fIx\fP and \fIy\fP, inclusive.

> 整数が与えられると、
> \fIx\fP と \fIy\fP の間の数を全て列挙した形に展開されます。

「x と y の間」という表現は、x や y を含むのか含まないのか、曖昧です。
それは英語の between も同じなので、inclusive と言っているわけです。
inclusive は生かすべきでしょう。訳例をあげると、

  整数を指定すると、(式は) x と y の間の、x と y を含むすべての整数に
  展開されます。

「x と y を含む」は「両者を含む」もあります。

なお、「x から y までの」と言い換えれば、inclusive の訳を省略できる
かもしれません (それでも、曖昧さは残るかもしれませんが)。
原文が厳密さを求めた少し固い定形表現ですから、訳文も固めの定形表現が
(定形表現っぽい表現が) 似合うと思います。

# ついでに言うと、試訳で are supplied を「指定すると」と訳してみたのは、
# 日本語ではこういうときあまり受身を使わないからです。

> .\"O Supplied integers may be prefixed with \fI0\fP to force each term to have the
> .\"O same width.  When either \fIx\fP or \fPy\fP begins with a zero, the shell
> .\"O attempts to force all generated terms to contain the same number of digits,
> .\"O zero-padding where necessary.

> 与る整数の前に \fI0\fP を付けると、全ての項が同じ幅に揃えられます。
> \fIx\fP か \fPy\fP のどちらかが 0 で始まる場合、生成される全ての項が
> 同じ文字数になるように、必要であれば前に 0 が付けられます。

この二つの文は同じことを言っています。つまり、後文は前文を詳しく説明
しているわけです。ですから、後文の先頭に「すなわち」を付けるか、後文の
末尾を「付けられるのです、付けられるわけです」にすると (あるいは、両方を
やると)、文脈がはっきりすると思います。

the same number of digits は「同じ桁数」ではどうでしょう。

「与える整数」という言い方は、ちょっと舌足らずな気がします。

# zero-padding は「ゼロで埋める」と言いたいところですが、なかなか
# 難しいですね。ちょっとやってみます。
#
#   x か y が 0 で始まる場合は、生成されるすべての項が同じ桁数に
#   なるように、数字の前を必要なだけ 0 で埋めるわけです。
#
# if necessary ではなく、where necessary であることを意識しています。
# ご参考まで。

> .\"O When characters are supplied, the expression expands to each character
> .\"O lexicographically between \fIx\fP and \fIy\fP, inclusive.  Note that
> .\"O both \fIx\fP and \fIy\fP must be of the same type.
> .\"O When the increment is supplied, it is used as the difference between
> .\"O each term.  The default increment is 1 or -1 as appropriate.

> 文字が与えられると
> 辞書順で \fIx\fP と \fIy\fP の間の文字を全て列挙した形に展開されます。
> \fIx\fP と \fIy\fP は同じ型である必要があります。
> increment が与えられると、その値が各項の間の差となります。
> increment のデフォルトは、1 または -1 のうち適切な方です。

ここの inclusive についても、前と同じです。

ところで、「x と y は同じ型である必要があります」というのは、どういう
ことですか。

increment を英語のままにするかどうかは、"and incr, an optional
increment,"の訳し方次第です。日本語にした方がよいと思いますが、
たとえば、前の部分の訳が「差分 (increment)」なら、ここは increment
でも構わないでしょう。

> .\"O Brace expansion is performed before any other expansions,
> .\"O and any characters special to other expansions are preserved
> .\"O in the result.  It is strictly textual.
> .\"O .B Bash
> .\"O does not apply any syntactic interpretation to the context of the
> .\"O expansion or the text between the braces.
> ブレースの展開はほかのどの展開よりも前に実行されます。
> また、ほかの展開において特殊な意味を持つ文字もそのまま結果に残ります。
> つまり、厳密にテキスト操作だけを行います。
> .B bash
> は、展開の文脈やブレースの間のテキストに対して
> 文法的な解釈を適用することは一切ありません。

「展開の文脈」とは何なんでしょう。the context はどこまでかかるので
しょうか。

> .\"O A correctly-formed brace expansion must contain unquoted opening
> .\"O and closing braces, and at least one unquoted comma or a valid
> .\"O sequence expression .

> 正しい形のブレース展開には、クォートされていない開きブレースと
> 閉じブレース、また少なくとも 1 つのクォートされていないコンマが
> 含まれていなければなりません。正しい形でないブレース展開は全て、

訳文では or a valid sequence expression が抜けています。
and は「また」よりも「それに」の方がよいと思います。まあ、どちらでも
よいのですが、どちらかと言えば「それに」でしょう。

> .\"O This construct is typically used as shorthand when the common
> .\"O prefix of the strings to be generated is longer than in the
> .\"O above example:
> この仕組みは、
> 生成される文字列の共通先頭部分が上記の例より長い場合に、
> 短縮表現としてよく使用されます:

ここにも例示のコロンがあります。「使用されます。たとえば、」と補った
方がよいかもしれません。

This construct というのは、ブレース展開のことでしょう。違うんでしょうか。

前に This mechanism を「機構」と訳すのを「固い」と言いましたが、
この construct を「仕組み」と訳すことについても似たことが言えます。
こっちの場合は、「固い」というより、「ピンとこない」ですが。

construct というのは、要するに「組み立てること、組み立て方、組み立て
られたもの」ですから、「書式、書き方、表記法」などは、どうでしょうか。
どうしても「仕組み」を使うなら、「このブレース展開という仕組み」と
言えば、わかりやすいと思います。

「上記の例」というのは、何なんでしょうか。四つほど上のパラグラフの
「例えば a{d,c,b}e は `ade ace abe' と展開されます」でしょうか。
だったら、「上記」よりも、「上述の、前述の、前記の」の方がよいと
思います。わたしの語感では、「上記」はすぐ上に書いたことなのです。

ゴタゴタと書いたので、訳例を挙げておきます。

  この表記法が短縮表現として使用されるとき、生成される文字列の
  前に付く共通部分は、前述した a{d,c,b}e の例よりも、長いのが
  普通です。たとえば、

"the above example" を「a{d,c,b}e の例」と補足説明してしまうのなら、
「上記」でもよいですね。

> mkdir /usr/local/src/bash/{old,new,dist,bugs}
> .RE
> .\"O .RE
> .\"O or
> あるいは
> .RS
> chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

こういうとき「あるいは、」と点を付けた方が落ち着きがよいと思います。
わたしの好みですけれど。

> .SS チルダ展開

> .\"O If none of the characters in the tilde-prefix are quoted, the
> .\"O characters in the tilde-prefix following the tilde are treated as a
> .\"O possible \fIlogin name\fP.

> クォートされている文字がチルダプレフィックス中に無ければ、
> チルダプレフィックス中のチルダ以降の文字は、
> \fIログイン名 (login name)\fP になる可能性がある文字列として扱われます。

「ログイン名になる可能性がある文字列」は、ちょっと冗長です。
「ログイン名かもしれない文字列」ぐらいでどうでしょうか。

-- 
長南洋一




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