\input texinfo @c -*-texinfo-*-
@comment $Id: diff-ja.texi,v 1.1 2002/11/03 13:35:09 futoshi Exp $
@comment %**start of header
@setfilename diff-ja.info
@include diff-v.texi
@settitle Comparing and Merging Files
@syncodeindex vr cp
@setchapternewpage odd
@comment %**end of header

@c @documentlanguage ja

@copying
This manual is for GNU Diffutils
(version @value{VERSION}, @value{UPDATED}),
and documents the @sc{gnu} @command{diff}, @command{diff3},
@command{sdiff}, and @command{cmp} commands for showing the
differences between files and the @sc{gnu} @command{patch} command for
using their output to update files.

Copyright @copyright{} 1992, 1993, 1994, 1998, 2001, 2002 Free
Software Foundation, Inc.

@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.  A copy of the
license is included in the section entitled ``GNU Free Documentation
License.''

(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software.  Copies published by the Free
Software Foundation raise funds for GNU development.''
@end quotation
@end copying

@c Debian install-info (up through at least version 1.9.20) uses only the
@c first dircategory.  Put this one first, as it is more useful in practice.
@dircategory Individual utilities
@direntry
* cmp(ja): (diff-ja)Invoking cmp.      Compare 2 files byte by byte.
* diff(ja): (diff-ja)Invoking diff.    Compare 2 files line by line.
* diff3(ja): (diff-ja)Invoking diff3.  Compare 3 files line by line.
* patch(ja): (diff-ja)Invoking patch.  Apply a patch to a file.
* sdiff(ja): (diff-ja)Invoking sdiff.  Merge 2 files side-by-side.
@end direntry

@dircategory GNU packages
@direntry
* Diff(ja): (diff-ja).               Comparing and merging files.
@end direntry

@titlepage
@title Comparing and Merging Files
@subtitle for Diffutils @value{VERSION} and @code{patch} 2.5.4
@subtitle @value{UPDATED}
@author David MacKenzie, Paul Eggert, and Richard Stallman
@c 翻訳：西尾 太
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@shortcontents
@contents

@ifnottex
@node Top
@c @top Comparing and Merging Files
@top ファイルの比較とマージ

@insertcopying
@end ifnottex

@menu
* Overview::              Preliminary information.
* Comparison::            What file comparison means.

* Output Formats::        Formats for two-way difference reports.
* Incomplete Lines::      Lines that lack trailing newlines.
* Comparing Directories:: Comparing files and directories.
* Adjusting Output::      Making @command{diff} output prettier.
* diff Performance::      Making @command{diff} smarter or faster.

* Comparing Three Files:: Formats for three-way difference reports.
* diff3 Merging::         Merging from a common ancestor.

* Interactive Merging::   Interactive merging with @command{sdiff}.

* Merging with patch::    Using @command{patch} to change old files into new ones.
* Making Patches::        Tips for making and using patch distributions.

* Invoking cmp::          Compare two files byte by byte.
* Invoking diff::         Compare two files line by line.
* Invoking diff3::        Compare three files line by line.
* Invoking patch::        Apply a diff file to an original.
* Invoking sdiff::        Side-by-side merge of file differences.

* Standards conformance:: Conformance to the @sc{posix} standard.
* Projects::              If you've found a bug or other shortcoming.

* Copying This Manual::   How to make copies of this manual.
* Index::                 Index.
@end menu

@node Overview
@c @unnumbered Overview
@unnumbered 概要
@cindex overview of @command{diff} and @command{patch}

@c Computer users often find occasion to ask how two files differ.  Perhaps
@c one file is a newer version of the other file.  Or maybe the two files
@c started out as identical copies but were changed by different people.
@c 
コンピュータユーザは，二つのファイルの差がどれくらいあるのか尋ねることが
多いことを知っています．おそらく一つのファイルは，もう一つのファイルのよ
り新しいバージョンでしょう．もしかすると，二つのファイルは最初は同一のも
のだったのですが，別々の人が変更したものかもしれません．

@c You can use the @command{diff} command to show differences between two
@c files, or each corresponding file in two directories.  @command{diff}
@c outputs differences between files line by line in any of several
@c formats, selectable by command line options.  This set of differences is
@c often called a @dfn{diff} or @dfn{patch}.  For files that are identical,
@c @command{diff} normally produces no output; for binary (non-text) files,
@c @command{diff} normally reports only that they are different.
@c 
二つのファイルや，二つのディレクトリでそれぞれ対応するファイルの差を表示
するために，@command{diff}コマンドを使用することが可能です．
@command{diff}は，行単位でのファイル間の差を，コマンドラインで選択可能な
いくつかの書式で出力します．この差の組は@dfn{差分(diff)}や@dfn{パッチ
(patch)}と呼ばれることもよくあります．同一ファイルに対して，通常
@command{diff}は何も出力しません．バイナリ(テキストでない)ファイルに対し
て，通常@command{diff}はそれらが異なっていることだけを報告します．

@c You can use the @command{cmp} command to show the byte and line numbers
@c where two files differ.  @command{cmp} can also show all the bytes
@c that differ between the two files, side by side.  A way to compare
@c two files character by character is the Emacs command @kbd{M-x
@c compare-windows}.  @xref{Other Window, , Other Window, emacs, The @sc{gnu}
@c Emacs Manual}, for more information on that command.
@c 
二つのファイルの差がある場所のオフセットと行番号を表示するために，
@command{cmp}コマンドを使用することが可能です．@command{cmp}では，二つの
ファイル間で異なっている全ての文字を並べて表示することも可能です．二つの
ファイルを文字単位で比較するもう一つの方法としては，Emacsコマンドの 
@kbd{M-x compare-windows}があります．そのコマンドの詳細は，@xref{Other
Window, , Other Window, emacs, The GNU Emacs Manual}.

@c You can use the @command{diff3} command to show differences among three
@c files.  When two people have made independent changes to a common
@c original, @command{diff3} can report the differences between the original
@c and the two changed versions, and can produce a merged file that
@c contains both persons' changes together with warnings about conflicts.
@c 
三つのファイル間の差を表示するために@command{diff3}コマンドを使用するこ
とが可能です．二人の人が共通のオリジナルに個別の変更を行なったとき，
@command{diff3}でオリジナルと二つの変更されたバージョンの差を報告させる
ことが可能で，衝突しているという警告を用いながら，両者の変更をそれぞれ含
めているマージされたファイルを生成することが可能です．

@c You can use the @command{sdiff} command to merge two files interactively.
@c 
二つのファイルを対話的にマージするために@command{sdiff}コマンドを使用す
ることが可能です．

@c You can use the set of differences produced by @command{diff} to distribute
@c updates to text files (such as program source code) to other people.
@c This method is especially useful when the differences are small compared
@c to the complete files.  Given @command{diff} output, you can use the
@c @command{patch} program to update, or @dfn{patch}, a copy of the file.  If you
@c think of @command{diff} as subtracting one file from another to produce
@c their difference, you can think of @command{patch} as adding the difference
@c to one file to reproduce the other.
@c 
(プログラムのソースコードのような)テキストファイルへの更新を他の人に配布
するために，@command{diff}で生成された差分の組を使用することが可能です．
比較したファイルの差が小さいとき，この手法は特に役に立ちます．
@command{diff}出力を与えることで，更新するための@command{patch}プログラ
ムを使用したり，ファイルのコピーを@dfn{patch}にしたりすることが可能です．
@command{diff}とは差分を生成するために一つのファイルからもう一つのファイ
ルを引くことだと考える場合，@command{patch}とは，もう一つのものを再生成
するために差分を一つのファイルに加えることだと考えることが可能です．

@c This manual first concentrates on making diffs, and later shows how to
@c use diffs to update files.
@c 
このマニュアルの最初では差分の作成に集中し，その後でファイルを更新するた
めに差分を使用する方法を提示します．

@c @sc{gnu} @command{diff} was written by Paul Eggert, Mike Haertel,
@c David Hayes, Richard Stallman, and Len Tower.  Wayne Davison designed and
@c implemented the unified output format.  The basic algorithm is described
@c in ``An O(ND) Difference Algorithm and its Variations'', Eugene W. Myers,
@c @cite{Algorithmica} Vol.@: 1 No.@: 2, 1986, pp.@: 251--266; and in ``A File
@c Comparison Program'', Webb Miller and Eugene W. Myers,
@c @cite{Software---Practice and Experience} Vol.@: 15 No.@: 11, 1985,
@c pp.@: 1025--1040.
@c 
@sc{gnu} @command{diff}は，Paul Eggert，Mike Haertel，David Hayes，
Richard Stallman，そしてLen Towerによって書かれました．Wayne Davisonは，
一体化した出力書式を設計し実装しました．基本的なアルゴリズムは，``An
O(ND) Difference Algorithm and its Variations'', Eugene W. Myers,
@cite{Algorithmica} Vol.@: 1 No.@: 2, 1986, pp.@: 251--266と，``A File
Comparison Program'', Webb Miller and Eugene W. Myers,
@cite{Software---Practice and Experience} Vol.@: 15 No.@: 11, 1985,
pp.@: 1025--1040に記述されています．
@c From: "Gene Myers" <gene@cs.arizona.edu>
@c They are about the same basic algorithm; the Algorithmica
@c paper gives a rigorous treatment and the sub-algorithm for
@c delivering scripts and should be the primary reference, but
@c both should be mentioned.
@c 
@c The algorithm was independently discovered as described in
@c ``Algorithms for Approximate String Matching'',
@c E. Ukkonen, @cite{Information and Control} Vol.@: 64, 1985, pp.@: 100--118.
@c 
アルゴリズムは，``Algorithms for Approximate String Matching'',
E. Ukkonen, @cite{Information and Control} Vol.@: 64, 1985, pp.@:
100--118に記述されているものに依存しないようにして発明されました．
@c From: "Gene Myers" <gene@cs.arizona.edu>
@c Date: Wed, 29 Sep 1993 08:27:55 MST
@c Ukkonen should be given credit for also discovering the algorithm used
@c in GNU diff.

@c @sc{gnu} @command{diff3} was written by Randy Smith.  @sc{gnu}
@c @command{sdiff} was written by Thomas Lord.  @sc{gnu} @command{cmp}
@c was written by Torbjorn Granlund and David MacKenzie.
@c 
@sc{gnu} @command{diff3}はRandy Smithによって書かれました．@sc{gnu}
@command{sdiff}はThomas Lordによって書かれました．@sc{gnu} @command{cmp} 
はTorbjorn GranlundとDavid MacKenzieによって書かれました．

@c @command{patch} was written mainly by Larry Wall and Paul Eggert;
@c several @sc{gnu} enhancements were contributed by Wayne Davison and
@c David MacKenzie.  Parts of this manual are adapted from a manual page
@c written by Larry Wall, with his permission.
@c 
@command{patch}はLarry WallとPaul Eggertによって書かれました．いくつかの
@sc{gnu}の拡張部分はWayne DavisonとDavid MacKenzieが寄贈してくれました．
このマニュアルの一部は，Larry Wallによって書かれたマニュアルページを適用
していて，それには彼の許可が付随しています．

@node Comparison
@c @chapter What Comparison Means
@chapter 比較が意味するもの
@cindex introduction

@c There are several ways to think about the differences between two files.
@c One way to think of the differences is as a series of lines that were
@c deleted from, inserted in, or changed in one file to produce the other
@c file.  @command{diff} compares two files line by line, finds groups of
@c lines that differ, and reports each group of differing lines.  It can
@c report the differing lines in several formats, which have different
@c purposes.
@c 
二つのファイル間の差を考えるときいくつかの方法があります．差を考えるとき
の一つの方法は，別のファイルを生成するために，まとまった行があるファイル
から削除，挿入，または変更されているということです．@command{diff}は行単
位で二つのファイルを比較し，異なっている行のまとまりを探し，そして，異なっ
ているそれぞれのまとまりを報告します．目的によって，いくつかの書式で異なっ
ている行を報告させることが可能です．

@c @sc{gnu} @command{diff} can show whether files are different without detailing
@c the differences.  It also provides ways to suppress certain kinds of
@c differences that are not important to you.  Most commonly, such
@c differences are changes in the amount of white space between words or
@c lines.  @command{diff} also provides ways to suppress differences in
@c alphabetic case or in lines that match a regular expression that you
@c provide.  These options can accumulate; for example, you can ignore
@c changes in both white space and alphabetic case.
@c 
@sc{gnu} @command{diff}では，詳細な差異を用いずにファイルが異なっている
かどうかを表示することが可能です．それは，重要ではない差異の表示を抑制す
る方法も提供しています．最も一般的なこととして，そのような差は単語や行の
間の空白の数が変更されているものです．@command{diff}は，アルファベットの
大文字小文字の差や，提供されている正規表現にマッチする行の差の表示を抑制
する方法も提供しています．これらのオプションは累積されます．例えば，空白
とアルファベットの大文字小文字の変更を無視することが可能です．

@c Another way to think of the differences between two files is as a
@c sequence of pairs of bytes that can be either identical or
@c different.  @command{cmp} reports the differences between two files
@c byte by byte, instead of line by line.  As a result, it is often
@c more useful than @command{diff} for comparing binary files.  For text
@c files, @command{cmp} is useful mainly when you want to know only whether
@c two files are identical, or whether one file is a prefix of the other.
@c 
二つのファイルの差を考えるもう一つの方法として，バイトの集合が同一または
異なっているというのもがあります．@command{cmp}は二つのファイル間の差を，
行単位ではなく，バイト単位で報告します．結果として，バイナリファイルに対
して@command{diff}を使用するより，遥かに役に立つことが多いでしょう．テキ
ストファイルに対しては，二つのファイルが同一かどうか，または，一つのファ
イルがもう一方のファイルに前置されているかどうかを知りたいだけのとき，主
に役に立つでしょう．

@c To illustrate the effect that considering changes byte by byte
@c can have compared with considering them line by line, think of what
@c happens if a single newline character is added to the beginning of a
@c file.  If that file is then compared with an otherwise identical file
@c that lacks the newline at the beginning, @command{diff} will report that a
@c blank line has been added to the file, while @command{cmp} will report that
@c almost every byte of the two files differs.
@c 
バイト単位での変更を考慮する影響を説明するには，行単位での変更を考慮する
ことと比較することが可能で，例えば単一の改行文字がファイルの最初にある場
合に何が生じるかを考えてみてください．そのファイルを，最初に改行が無いだ
けの同一の別ファイルと比較する場合，@command{diff}では改行がファイルに追
加されたことを報告しますが，@command{cmp}では二つのファイルはほとんど全
体が異なっていると報告するでしょう．

@c @command{diff3} normally compares three input files line by line, finds
@c groups of lines that differ, and reports each group of differing lines.
@c Its output is designed to make it easy to inspect two different sets of
@c changes to the same file.
@c 
@command{diff3}は，通常三つの入力ファイルを行単位で比較し，差異のある行
のまとまりを見つけ，それぞれの差異のある行のまとまりを報告します．その出
力は，同じファイルを変更した二つのものの差を調べることを容易にするように
設計されています．

@menu
* Hunks::             Groups of differing lines.
* White Space::       Suppressing differences in white space.
* Blank Lines::       Suppressing differences in blank lines.
* Case Folding::      Suppressing differences in alphabetic case.
* Specified Folding:: Suppressing differences that match regular expressions.
* Brief::             Summarizing which files are different.
* Binary::            Comparing binary files or forcing text comparisons.
@end menu

@node Hunks
@section Hunks
@cindex hunks

@c When comparing two files, @command{diff} finds sequences of lines common to
@c both files, interspersed with groups of differing lines called
@c @dfn{hunks}.  Comparing two identical files yields one sequence of
@c common lines and no hunks, because no lines differ.  Comparing two
@c entirely different files yields no common lines and one large hunk that
@c contains all lines of both files.  In general, there are many ways to
@c match up lines between two given files.  @command{diff} tries to minimize
@c the total hunk size by finding large sequences of common lines
@c interspersed with small hunks of differing lines.
@c 
二つのファイルを比較しているとき，@command{diff}は，@dfn{hunk}と呼ばれる
異なっている行のまとまりが疎らに存在している両方のファイルから，共通な行
の並びを探します．二つの同一ファイルの比較では差異のある行は無いので，一
つの共通な行の並びが見つかり，hunkはありません．二つの全く異なるファイル
の比較では，共通の行は無く，両方のファイルのすべての行を含んでいる一つの
大きなhunkが生成されます．一般的に，二つの与えられたファイル間で，行のマッ
チを調べる方法はたくさんあります．@command{diff}は，大きな共通行の並びを
探しながら差異のある行を小さなhunkにして，全体のhunkの大きさを最小にする
よう試みます．

@c For example, suppose the file @file{F} contains the three lines
@c @samp{a}, @samp{b}, @samp{c}, and the file @file{G} contains the same
@c three lines in reverse order @samp{c}, @samp{b}, @samp{a}.  If
@c @command{diff} finds the line @samp{c} as common, then the command
@c @samp{diff F G} produces this output:
@c 
例えば，ファイル@file{F}は三行@samp{a}，@samp{b}，@samp{c}を含んでいて，
ファイル@file{G}は同じ行を逆の順序@samp{c}，@samp{b}，@samp{a}で含んでい
ると仮定します．@command{diff}が行@samp{c}を共通として見つけた場合，コマ
ンド@samp{diff F G}は以下の出力を生成します．

@example
1,2d0
< a
< b
3a2,3
> b
> a
@end example

@noindent
@c But if @command{diff} notices the common line @samp{b} instead, it produces
@c this output:
@c 
しかし，その代わりに共通行@samp{b}に注目する場合，以下の出力を生成します．

@example
1c1
< a
---
> c
3c3
< c
---
> a
@end example

@noindent
@c It is also possible to find @samp{a} as the common line.  @command{diff}
@c does not always find an optimal matching between the files; it takes
@c shortcuts to run faster.  But its output is usually close to the
@c shortest possible.  You can adjust this tradeoff with the
@c @option{--minimal} option (@pxref{diff Performance}).
@c 
@samp{a}が共通行として見つかる可能性もあります．@command{diff}は常に，ファ
イル間の最適なマッチしている部分を見つけるわけではありません．それで実行
がより早くなります．しかし，出力は通常可能な限り短くなるようにします．
@option{--minimal}オプションで，このトレードオフを調整することが可能です
(@pxref{diff Performance})．

@node White Space
@c @section Suppressing Differences in Blank and Tab Spacing
@section 空白とタブのスペースの差を抑制する
@cindex blank and tab difference suppression
@cindex tab and blank difference suppression

@c The @option{-E} and @option{--ignore-tab-expansion} options ignore the
@c distinction between tabs and spaces on input.  A tab is considered to be
@c equivalent to the number of spaces to the next tab stop.  @command{diff}
@c assumes that tab stops are set every 8 print columns.
@c 
@option{-E}と@option{--ignore-tab-expansion}オプションは，入力のタブとス
ペースの違いを無視します．タブは，次のタブストップまでのスペースの数に等
しいと考えられます．@command{diff}は，タブストップが八文字ごとに設定され
ている仮定します．

@c The @option{-b} and @option{--ignore-space-change} options are stronger.
@c They ignore white space at line end, and consider all other sequences of
@c one or more white space characters to be equivalent.  With these
@c options, @command{diff} considers the following two lines to be equivalent,
@c where @samp{$} denotes the line end:
@c 
@option{-b}と@option{--ignore-space-change}オプションはより強力です．そ
れらは行末の空白を無視し，それ以外の一つ以上の空白の並びが等価であると考
えます．これらのオプションを用いると，@command{diff}は以下のに行が等価で
あると考えます．@samp{$}は行末を示します．

@example
Here lyeth  muche rychnesse  in lytell space.   -- John Heywood$
Here lyeth muche rychnesse in lytell space. -- John Heywood   $
@end example

@c The @option{-w} and @option{--ignore-all-space} options are stronger still.
@c They ignore difference even if one line has white space where
@c the other line has none.  @dfn{White space} characters include
@c tab, newline, vertical tab, form feed, carriage return, and space;
@c some locales may define additional characters to be white space.
@c With these options, @command{diff} considers the
@c following two lines to be equivalent, where @samp{$} denotes the line
@c end and @samp{^M} denotes a carriage return:
@c 
@option{-w}と@option{--ignore-all-space}オプションは更に強力です．それら
は，片方の行には空白がありもう一方にはない場合でさえ，その差を無視します．
@dfn{空白}文字とは，タブ，改行，垂直タブ，改ページ，キャリッジリターン，
そしてスペースです．ロケールによっては，追加の文字が空白として定義されて
いるかもしれません．これらのオプションを用いると，@command{diff}は以下の
に行を等価と考えます．@samp{$}は行末を示し，@samp{^M}はキャリッジリター
ンを示します．

@example
Here lyeth  muche  rychnesse in lytell space.--  John Heywood$
  He relyeth much erychnes  seinly tells pace.  --John Heywood   ^M$
@end example

@node Blank Lines
@c @section Suppressing Differences in Blank Lines
@section 空白行の差を抑制する
@cindex blank line difference suppression

@c The @option{-B} and @option{--ignore-blank-lines} options ignore insertions
@c or deletions of blank lines.  These options affect only lines
@c that are completely empty; they do not affect lines that look empty but
@c contain space or tab characters.  With these options, for example, a
@c file containing
@c 
@option{-B}と@option{--ignore-blank-lines}オプションは，空白行の挿入や削
除を無視します．これらのオプションは，完全に空の行だけに効果があります．
それらは，空のように見えるが，スペースやタブを含んでいる行には効果があり
ません．これらのオプションを用いると，例えばファイルが以下のものを含んで
いると考えます．
@example
1.  A point is that which has no part.

2.  A line is breadthless length.
-- Euclid, The Elements, I
@end example
@noindent
@c is considered identical to a file containing
@c 
これは以下を含んでいるファイルと等価です．
@example
1.  A point is that which has no part.
2.  A line is breadthless length.


-- Euclid, The Elements, I
@end example

@node Case Folding
@c @section Suppressing Case Differences
@section 大文字小文字の差を抑制する
@cindex case difference suppression

@c @sc{gnu} @command{diff} can treat lower case letters as equivalent to their
@c upper case counterparts, so that, for example, it considers @samp{Funky
@c Stuff}, @samp{funky STUFF}, and @samp{fUNKy stuFf} to all be the same.
@c To request this, use the @option{-i} or @option{--ignore-case} option.
@c 
@sc{gnu} @command{diff}では，例えば，@samp{Funky Stuff}，@samp{funky
STUFF}，そして@samp{fUNKy stuFf}がすべて同じ名前だと考えるように，小文字
がそれに対応する大文字と等価物として扱うことが可能です．こうするために，
@option{-i}や@option{--ignore-case}オプションを使用してください．

@node Specified Folding
@c @section Suppressing Lines Matching a Regular Expression
@section 正規表現にマッチする行を抑制する
@cindex regular expression suppression

@c To ignore insertions and deletions of lines that match a
@c @command{grep}-style regular expression, use the @option{-I
@c @var{regexp}} or @option{--ignore-matching-lines=@var{regexp}} option.
@c You should escape
@c regular expressions that contain shell metacharacters to prevent the
@c shell from expanding them.  For example, @samp{diff -I '^[[:digit:]]'} ignores
@c all changes to lines beginning with a digit.
@c 
@command{grep}-形式の正規表現にマッチする行の挿入と削除を無視するために，
@option{-I @var{regexp}}や@option{--ignore-matching-lines=@var{regexp}}
オプションを指定してください．シェルのメタ文字がシェルで展開されるのを避
けるために，正規表現をエスケープしてください．例えば，@samp{diff -I
'^[[:digit:]]'}は，数字で始まる行のすべての変更を無視します．

@c However, @option{-I} only ignores the insertion or deletion of lines that
@c contain the regular expression if every changed line in the hunk---every
@c insertion and every deletion---matches the regular expression.  In other
@c words, for each nonignorable change, @command{diff} prints the complete set
@c of changes in its vicinity, including the ignorable ones.
@c 
しかし@option{-I}は，hunk内のすべての変更行が --- すべて挿入と削除で --- 
正規表現にマッチする場合，正規表現を含んでいる行の挿入と削除のみを無視し
ます．言い替えると，無視できない変更に対し，それに隣接する変更の完全な組
を無視できるものも含めて@command{diff}は出力します．

@c You can specify more than one regular expression for lines to ignore by
@c using more than one @option{-I} option.  @command{diff} tries to match each
@c line against each regular expression.
@c 
一つ以上の@option{-I}オプションを使用して，行を無視するために一つ以上の
正規表現を指定することが可能です．@command{diff}はそれぞれの正規表現に対
し，それぞれの行のマッチを試みます．

@node Brief
@c @section Summarizing Which Files Differ
@section ファイルの差の概要
@cindex summarizing which files differ
@cindex brief difference reports

@c When you only want to find out whether files are different, and you
@c don't care what the differences are, you can use the summary output
@c format.  In this format, instead of showing the differences between the
@c files, @command{diff} simply reports whether files differ.  The @option{-q}
@c and @option{--brief} options select this output format.
@c 
ファイルが異なっているかどうかを知りたいだけのときで，差異が何かに注目し
ていないとき，概要を出力する書式を使用することが可能です．この書式では，
ファイル間の差を表示する代わりに，@command{diff}は単純にファイルに差異が
あるかどうかを報告します．@option{-q}と@option{--brief}オプションでこの
書式を選択します．

@c This format is especially useful when comparing the contents of two
@c directories.  It is also much faster than doing the normal line by line
@c comparisons, because @command{diff} can stop analyzing the files as soon as
@c it knows that there are any differences.
@c 
この書式は，二つのディレクトリの内容を比較するとき特に役に立ちます．
@command{diff}は，差異があることが分かるとすぐにファイルの解析を停止する
ことが可能なので，それは普通に行ごとに比較するより遥かに速くもなります．

@c You can also get a brief indication of whether two files differ by using
@c @command{cmp}.  For files that are identical, @command{cmp} produces no
@c output.  When the files differ, by default, @command{cmp} outputs the byte
@c and line number where the first difference occurs.  You can use
@c the @option{-s} option to suppress that information, so that @command{cmp}
@c produces no output and reports whether the files differ using only its
@c exit status (@pxref{Invoking cmp}).
@c 
@command{cmp}を使用することで，二つのファイルが違っているかどうかを，短
く示しているものを得ることも可能です．ファイルが異なっているとき，デフォ
ルトで，最初の差異が発生したところで@command{cmp}はバイトと行番号を出力
します．@command{cmp}が出力を生成せず，ファイルが異なっているかどうかを
終了ステータスだけで報告するようにするため，その情報を抑制するために
@option{-s}オプションを使用することも可能です(@pxref{Invoking cmp})．

@c Fix this.
@c 
@c Unlike @command{diff}, @command{cmp} cannot compare directories; it can only
@c compare two files.
@c 
@command{diff}とは異なり，@command{cmp}はディレクトリを比較することは不
可能です．二つのファイルの比較のみ可能です．

@node Binary
@c @section Binary Files and Forcing Text Comparisons
@section バイナリファイルと，テキストファイルの比較の強制
@cindex binary file diff
@cindex text versus binary diff

@c If @command{diff} thinks that either of the two files it is comparing is
@c binary (a non-text file), it normally treats that pair of files much as
@c if the summary output format had been selected (@pxref{Brief}), and
@c reports only that the binary files are different.  This is because line
@c by line comparisons are usually not meaningful for binary files.
@c 
@command{diff}が比較している二つのファイルのうちの一方がバイナリ(テキス
トファイルではない)と考える場合，通常ファイルの組を概要の出力書式が選択
されているように(@pxref{Brief})扱い，バイナリファイルが異なっていること
だけを報告します．これは，行単位での比較がバイナリファイルに対して普通は
意味が無いためです．

@c @command{diff} determines whether a file is text or binary by checking the
@c first few bytes in the file; the exact number of bytes is system
@c dependent, but it is typically several thousand.  If every byte in
@c that part of the file is non-null, @command{diff} considers the file to be
@c text; otherwise it considers the file to be binary.
@c 
ファイルの最初の数バイトを調査して，@command{diff}はファイルがテキストか
バイナリかを決定します．正確なバイト数はシステムに依存しますが，それは通
常数千になります．ファイルの一部のすべてのバイトが@samp{null}ではない場
合，@command{diff}はファイルがテキストだと考えます．それ以外の場合は，ファ
イルがバイナリだと考えます．

@c Sometimes you might want to force @command{diff} to consider files to be
@c text.  For example, you might be comparing text files that contain
@c null characters; @command{diff} would erroneously decide that those are
@c non-text files.  Or you might be comparing documents that are in a
@c format used by a word processing system that uses null characters to
@c indicate special formatting.  You can force @command{diff} to consider all
@c files to be text files, and compare them line by line, by using the
@c @option{-a} or @option{--text} option.  If the files you compare using this
@c option do not in fact contain text, they will probably contain few
@c newline characters, and the @command{diff} output will consist of hunks
@c showing differences between long lines of whatever characters the files
@c contain.
@c 
ファイルがテキストファイルだと@command{diff}に強制的に考えさせたいときも
あるでしょう．例えば，@samp{null}文字が含まれているテキストファイルを比
較する可能性があります．@command{diff}は誤って，これらをテキストファイル
ではないと決定するでしょう．また，@samp{null}文字を特殊なフォーマットを
示すために使用するワープロシステムで使用されているフォーマットのファイル
を比較する可能性もあります．@option{-a}や@option{--text}オプションを使用
することで，@command{diff}に強制的にすべてのファイルがテキストファイルで
あると考えさせ，行ごとにそれらを比較させることが可能です．このオプション
を使用して比較しているファイルが，実際にはテキストを含んでいない場合，お
そらくファイルには数個の改行文字しかなく，@command{diff}の出力は，ファイ
ルに含まれているすべての文字からなる長い行の差異を表示するhunkになるでしょ
う．

@c You can also force @command{diff} to consider all files to be binary files,
@c and report only whether they differ (but not how).  Use the
@c @option{-q} or @option{--brief} option for this.
@c 
すべてのファイルをバイナリファイルだと@command{diff}に強制的に考えさせ，
ファイルが(どのように異なっているかではなく)異なっているかどうかのみを報
告させることも可能です．このために@option{-q}や@option{--brief}オプショ
ンを使用してください．

@c Differing binary files are considered to cause trouble because the
@c resulting @command{diff} output does not capture all the differences.
@c This trouble causes @command{diff} to exit with status 2.  However,
@c this trouble cannot occur with the @option{--a} or @option{--text}
@c option, or with the @option{-q} or @option{--brief} option, as these
@c options both cause @command{diff} to treat binary files like text
@c files.
@c 
バイナリファイルの差は，@command{diff}の出力結果がすべての差を取り切れな
いので，問題が生じると考えられます．この問題で，@command{diff}はステータ
ス2で終了します．しかし，この問題は@option{--a}や@option{--text}オプショ
ンを用いたり，@option{-q}や@option{--brief}オプションを用いることで発生
しないので，これらどちらのオプションでも，@command{diff}はバイナリファイ
ルをテキストファイルのように扱います．

@c In operating systems that distinguish between text and binary files,
@c @command{diff} normally reads and writes all data as text.  Use the
@c @option{--binary} option to force @command{diff} to read and write binary
@c data instead.  This option has no effect on a @sc{posix}-compliant system
@c like @sc{gnu} or traditional Unix.  However, many personal computer
@c operating systems represent the end of a line with a carriage return
@c followed by a newline.  On such systems, @command{diff} normally ignores
@c these carriage returns on input and generates them at the end of each
@c output line, but with the @option{--binary} option @command{diff} treats
@c each carriage return as just another input character, and does not
@c generate a carriage return at the end of each output line.  This can be
@c useful when dealing with non-text files that are meant to be
@c interchanged with @sc{posix}-compliant systems.
@c 
テキストファイルとバイナリファイルで差があるオペレーティングシステムでは，
@command{diff}は通常，すべてのデータをテキストとして読み書きします．代わ
りにバイナリデータとして@command{diff}に読み書きさせるために，
@option{--binary}オプションを使用してください．このオプションは，
@sc{gnu}や伝統的なUnixシステムのような@sc{posix}-準拠のシステムでは効果
がありません．しかし，多くのパーソナルコンピュータのオペレーティングシス
テムでは，行末の改行の後にキャリッジリターンが存在します．そのようなシス
テムでは，@command{diff}は通常入力されるこれらのキャリッジリターンを無視
し，それぞれの出力の行末にキャリッジリターンを生成しますが，
@option{--binary}オプションを用いると@command{diff}はそれぞれのキャリッ
ジリターンをそのまま入力文字として扱い，それぞれの出力の行末にキャリッジ
リターンを生成しません．@sc{posix}-準拠のシステムで変換する予定のテキス
トではないファイルを扱うとき，これは役に立つはずです．

@c The @option{--strip-trailing-cr} causes @command{diff} to treat input
@c lines that end in carriage return followed by newline as if they end
@c in plain newline.  This can be useful when comparing text that is
@c imperfectly imported from many personal computer operating systems.
@c This option affects how lines are read, which in turn affects how they
@c are compared and output.
@c 
@option{--strip-trailing-cr}で，@command{diff}は行末の改行にキャリッジリ
ターンが続いている入力行を普通の改行として扱います．多くのパーソナルコン
ピュータのオペレーティングシステムからインポートされた不完全なテキストを
比較するとき，これは役に立つはずです．このオプションは行が読み込まれる方
法に影響があり，それは順次，比較される方法と出力の方法に影響していきます．

@c If you want to compare two files byte by byte, you can use the
@c @command{cmp} program with the @option{-l} option to show the values
@c of each differing byte in the two files.  With @sc{gnu} @command{cmp},
@c you can also use the @option{-b} option to show the @sc{ascii}
@c representation of those bytes.  @xref{Invoking cmp}, for more
@c information.
@c 
二つのファイルをバイト単位で比較したい場合，二つのファイルのバイトごとの
差の値を表示するために，@option{-l}オプションを用いて@command{cmp}プログ
ラムを使用することが可能です．@sc{gnu} @command{cmp}を用いると，これらの
バイトの@sc{ascii}表現を表示するために@option{-b}オプションを使用するこ
とも可能です．詳細は@xref{Invoking cmp}.

@c If @command{diff3} thinks that any of the files it is comparing is binary
@c (a non-text file), it normally reports an error, because such
@c comparisons are usually not useful.  @command{diff3} uses the same test as
@c @command{diff} to decide whether a file is binary.  As with @command{diff}, if
@c the input files contain a few non-text bytes but otherwise are like
@c text files, you can force @command{diff3} to consider all files to be text
@c files and compare them line by line by using the @option{-a} or
@c @option{--text} options.
@c 
比較しているファイルのいずれかを@command{diff3}がバイナリ(テキストではな
いファイル)と考える場合，そのような比較は普通意味が無いので，通常はエラー
を報告します．@command{diff3}は，ファイルがバイナリかどうかを
@command{diff}が決定するテストと同じテストを使用します．@command{diff}を
用いるときと同様に，入力ファイルにテキストでないバイトが含まれているが，
それ以外はテキストファイルに似ている場合，@option{-a}や@option{--text}オ
プションを使用することで，@command{diff3}にすべてのファイルをテキストファ
イルと考えさせ，行単位での比較を強制させることが可能です．

@node Output Formats
@c @chapter @command{diff} Output Formats
@chapter @command{diff}の出力書式
@cindex output formats
@cindex format of @command{diff} output

@c @command{diff} has several mutually exclusive options for output format.
@c The following sections describe each format, illustrating how
@c @command{diff} reports the differences between two sample input files.
@c 
@command{diff}には，出力書式に対する相互に排他的なオプションがいくつかあ
ります．以下のセクションではそれぞれの書式を記述し，二つのサンプル入力ファ
イル間の差を@command{diff}が報告する方法を図示します．

@menu
* Sample diff Input:: Sample @command{diff} input files for examples.
* Normal::            Showing differences without surrounding text.
* Context::           Showing differences with the surrounding text.
* Side by Side::      Showing differences in two columns.
* Scripts::           Generating scripts for other programs.
* If-then-else::      Merging files with if-then-else.
@end menu

@node Sample diff Input
@c @section Two Sample Input Files
@section 二つのサンプル入力ファイル
@cindex @command{diff} sample input
@cindex sample input for @command{diff}

@c Here are two sample files that we will use in numerous examples to
@c illustrate the output of @command{diff} and how various options can
@c change it.
@c 
@command{diff}の出力と，様々なオプションがどのようにしてそれを変更するか
をを説明するために多くの例で使用する二つのサンプルファイルを以下に示しま
す．

@c This is the file @file{lao}:
@c 
これはファイル@file{lao}です．

@example
The Way that can be told of is not the eternal Way;
The name that can be named is not the eternal name.
The Nameless is the origin of Heaven and Earth;
The Named is the mother of all things.
Therefore let there always be non-being,
  so we may see their subtlety,
And let there always be being,
  so we may see their outcome.
The two are the same,
But after they are produced,
  they have different names.
@end example

@c This is the file @file{tzu}:
@c 
これはファイル@file{tzu}です．

@example
The Nameless is the origin of Heaven and Earth;
The named is the mother of all things.

Therefore let there always be non-being,
  so we may see their subtlety,
And let there always be being,
  so we may see their outcome.
The two are the same,
But after they are produced,
  they have different names.
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!
@end example

@c In this example, the first hunk contains just the first two lines of
@c @file{lao}, the second hunk contains the fourth line of @file{lao}
@c opposing the second and third lines of @file{tzu}, and the last hunk
@c contains just the last three lines of @file{tzu}.
@c 
この例では，最初のhunkには@file{lao}の最初の二つの行が含まれ，二番目の
hunkには@file{lao}の四行目と対応する@file{tzu}の二行目と三行目が含まれ，
そして，最後のhunkには@file{tzu}の最後の三行が含まれます．

@node Normal
@c @section Showing Differences Without Context
@section 周りの文(コンテクスト)を使用しない差の表示
@cindex normal output format
@cindex @samp{<} output format

@c The ``normal'' @command{diff} output format shows each hunk of differences
@c without any surrounding context.  Sometimes such output is the clearest
@c way to see how lines have changed, without the clutter of nearby
@c unchanged lines (although you can get similar results with the context
@c or unified formats by using 0 lines of context).  However, this format
@c is no longer widely used for sending out patches; for that purpose, the
@c context format (@pxref{Context Format}) and the unified format
@c (@pxref{Unified Format}) are superior.  Normal format is the default for
@c compatibility with older versions of @command{diff} and the @sc{posix}
@c standard.  Use the @option{--normal} option to select this output
@c format explicitly.
@c 
``通常''の@command{diff}出力の書式は，周りの文を付けずに差異部分のそれぞ
れのhunkを表示します．そのような出力は，変更されていない周りの行に邪魔さ
れず，行が変更された様子を見るには最も明確なときもあります(しかし，周り
の文を0行使用した，周りの行を用いた書式や一体化した書式を使用して，同様
な結果を得ることも可能です)．しかし，この書式をパッチの送付に広く使用す
ることはもうありません．その目的では，周りの文を使用する書式
(@pxref{Context Format})と，一体化した書式(@pxref{Unified Format})がより
好まれます．通常の書式は，古いバージョンの@command{diff}と@sc{posix}標準
との互換性のため，デフォルトになっています．この出力書式を明示的に選択す
るために@option{--normal}オプションを使用してください．

@menu
* Detailed Normal:: A detailed description of normal output format.
* Example Normal::  Sample output in the normal format.
@end menu

@node Detailed Normal
@c @subsection Detailed Description of Normal Format
@subsection 通常書式の詳細な説明

@c The normal output format consists of one or more hunks of differences;
@c each hunk shows one area where the files differ.  Normal format hunks
@c look like this:
@c 
通常の出力書式は，一つ以上の差異部分のhunkを含んでいます．それぞれのhunk 
はファイルの差の一つの領域を表示します．通常の書式のhunkは以下のようにな
ります．

@example
@var{change-command}
< @var{from-file-line}
< @var{from-file-line}@dots{}
---
> @var{to-file-line}
> @var{to-file-line}@dots{}
@end example

@c There are three types of change commands.  Each consists of a line
@c number or comma-separated range of lines in the first file, a single
@c character indicating the kind of change to make, and a line number or
@c comma-separated range of lines in the second file.  All line numbers are
@c the original line numbers in each file.  The types of change commands
@c are:
@c 
三つの形式の変更コマンド(@samp{change-command})があります．それぞれ，最
初のファイルの行番号またはカンマで分けられた行の範囲，変更方法の種類を示
す単一文字，そして，二番目のファイルの行番号またはカンマで分けられた行の
範囲です．すべての行番号は，それぞれのファイルのもともとの行番号です．変
更コマンドの形式は以下のとおりです．

@table @samp
@item @var{l}a@var{r}
@c Add the lines in range @var{r} of the second file after line @var{l} of
@c the first file.  For example, @samp{8a12,15} means append lines 12--15
@c of file 2 after line 8 of file 1; or, if changing file 2 into file 1,
@c delete lines 12--15 of file 2.
@c 
最初のファイルの@var{l}行の後に，二番目のファイルの範囲@var{r}に行が追加
されています．例えば，@samp{8a12,15}は，1のファイルの八行目の後に2のファ
イルの12--15行が追加されたことを意味します．または，変更が2から1への場合，
ファイル2の12--15行が削除されたことを意味します．

@item @var{f}c@var{t}
@c Replace the lines in range @var{f} of the first file with lines in range
@c @var{t} of the second file.  This is like a combined add and delete, but
@c more compact.  For example, @samp{5,7c8,10} means change lines 5--7 of
@c file 1 to read as lines 8--10 of file 2; or, if changing file 2 into
@c file 1, change lines 8--10 of file 2 to read as lines 5--7 of file 1.
@c 
最初のファイルの@var{f}の範囲の行が，二番目のファイルの@var{t}の範囲の行
で置換されています．これは，追加と削除の組み合わせに似ていますが，よりコ
ンパクトになっています．例えば，@samp{5,7c8,10}は，ファイル1の5--7行がファ
イル2の8--10行に変更されたことを意味します．または，変更が2から1への場合，
ファイル2の8--10行がファイル1の5--7行に変更されたことを意味します．

@item @var{r}d@var{l}
@c Delete the lines in range @var{r} from the first file; line @var{l} is where
@c they would have appeared in the second file had they not been deleted.
@c For example, @samp{5,7d3} means delete lines 5--7 of file 1; or, if
@c changing file 2 into file 1, append lines 5--7 of file 1 after line 3 of
@c file 2.
@c 
最初のファイルから範囲@var{r}の行が削除されています．行@var{l}は，二番目
のファイルに削除されているようにみえる場所です．例えば，@samp{5,7d3}はファ
イル1の5--7行が削除されていることを意味します．または，変更が2から1への
場合，ファイル2の3行目の後にファイル1の5--7行が追加されたことを意味しま
す．
@end table

@node Example Normal
@c @subsection An Example of Normal Format
@subsection 通常の書式の例

@c Here is the output of the command @samp{diff lao tzu}
@c (@pxref{Sample diff Input}, for the complete contents of the two files).
@c Notice that it shows only the lines that are different between the two
@c files.
@c 
コマンド@samp{diff lao tzu}の出力は以下のようになります(完全な二つのファ
イルの内容は@pxref{Sample diff Input})．二つのファイルで異なっている行の
みが表示されていることに注目してください．

@example
1,2d0
< The Way that can be told of is not the eternal Way;
< The name that can be named is not the eternal name.
4c2,3
< The Named is the mother of all things.
---
> The named is the mother of all things.
> 
11a11,13
> They both may be called deep and profound.
> Deeper and more profound,
> The door of all subtleties!
@end example

@node Context
@c @section Showing Differences in Their Context
@section 周りの文を用いた差の表示
@cindex context output format
@cindex @samp{!} output format

@c Usually, when you are looking at the differences between files, you will
@c also want to see the parts of the files near the lines that differ, to
@c help you understand exactly what has changed.  These nearby parts of the
@c files are called the @dfn{context}.
@c 
通常，ファイル間の差を見るときは，正確に何が変更されたのかを理解する手助
けとなる，ファイルの差がある行の周りの部分も見たいと思うでしょう．このよ
うなファイルの周りの部分を@dfn{context(周りの文)}と呼びます．

@c @sc{gnu} @command{diff} provides two output formats that show context
@c around the differing lines: @dfn{context format} and @dfn{unified
@c format}.  It can optionally show in which function or section of the
@c file the differing lines are found.
@c 
@sc{gnu} @command{diff}は異なっている行の周りの文を表示する，二つの出力
書式を提供しています．@dfn{context format(周りの文を用いた書式)}と
@dfn{unified format(一体化した書式)}です．それで，異なっている行が見つかっ
た関数やファイルのセクションを追加表示することが可能です．

@c If you are distributing new versions of files to other people in the
@c form of @command{diff} output, you should use one of the output formats
@c that show context so that they can apply the diffs even if they have
@c made small changes of their own to the files.  @command{patch} can apply
@c the diffs in this case by searching in the files for the lines of
@c context around the differing lines; if those lines are actually a few
@c lines away from where the diff says they are, @command{patch} can adjust
@c the line numbers accordingly and still apply the diff correctly.
@c @xref{Imperfect}, for more information on using @command{patch} to apply
@c imperfect diffs.
@c 
@command{diff}の出力形式で，他人にファイルの新しいバージョンを配布する場
合，彼らがファイルに独自の変更をしている場合でも差分を適用できるように，
周りの文を表示する出力形式の一つを使用すべきです．この状況でも，異なって
いる行の周りの文の行をファイル内で探すことで，@command{patch}で差分を適
用することが可能です．これらの行が差分が告げている場所から実際には数行離
れていても，@command{patch}は行番号を調整し，差分を正しく適用することが
可能です．不完全な差分を適用するために@command{patch}を使用する詳細は，
@xref{Imperfect}.

@menu
* Context Format::  An output format that shows surrounding lines.
* Unified Format::  A more compact output format that shows context.
* Sections::        Showing which sections of the files differences are in.
* Alternate Names:: Showing alternate file names in context headers.
@end menu

@node Context Format
@c @subsection Context Format
@subsection 周りの文を使用した書式

@c The context output format shows several lines of context around the
@c lines that differ.  It is the standard format for distributing updates
@c to source code.
@c 
周りの文を使用した出力書式は，異なっている行の周りの文の数行を表示します．
それはソースコードの更新部分を配布するための標準的な書式です．

@c To select this output format, use the @option{-C @var{lines}},
@c @option{--context@r{[}=@var{lines}@r{]}}, or @option{-c} option.  The
@c argument @var{lines} that some of these options take is the number of
@c lines of context to show.  If you do not specify @var{lines}, it
@c defaults to three.  For proper operation, @command{patch} typically needs
@c at least two lines of context.
@c 
この出力形式を選択するために，@option{-C @var{lines}}，
@option{--context@r{[}=@var{lines}@r{]}}，または@option{-c}オプションを
使用してください．これらのオプションのいくつかが受けとる引数@var{lines} 
は，表示する周りの文の行数です．@var{lines}を指定しない場合，それはデフォ
ルトで三行になります．適切に処理するため，@command{patch}は通常少なくと
も二行の周りの文を必要とします．

@menu
* Detailed Context:: A detailed description of the context output format.
* Example Context::  Sample output in context format.
* Less Context::     Another sample with less context.
@end menu

@node Detailed Context
@c @subsubsection Detailed Description of Context Format
@subsubsection 周りの文を使用した書式の詳細な説明

@c The context output format starts with a two-line header, which looks
@c like this:
@c 
周りの文を使用した出力書式は，二行のヘッダを用いて開始され，それは以下の
ようになります．

@example
*** @var{from-file} @var{from-file-modification-time}
--- @var{to-file} @var{to-file-modification time}
@end example

@noindent
@vindex LC_TIME
@cindex time stamp format, context diffs
@c The time stamp normally looks like @samp{2002-02-21 23:30:39.942229878
@c -0800} to indicate the date, time with fractional seconds, and time
@c zone in @uref{ftp://ftp.isi.edu/in-notes/rfc2822.txt, Internet RFC
@c 2822 format}.  However, a traditional time stamp like @samp{Thu Feb 21
@c 23:30:39 2002} is used if the @env{LC_TIME} locale category is either
@c @samp{C} or @samp{POSIX}.
@c 
タイムスタンプは通常，日付，有理数の秒を使用した時間，そして
@uref{ftp://ftp.isi.edu/in-notes/rfc2822.txt, Internet RFC 2822 format} 
のタイムゾーンを示すため@samp{2002-02-21 23:30:39.942229878 -0800}のよう
になります．しかし，@env{LC_TIME}ロケールカテゴリが@samp{C}または
@samp{POSIX}の場合，伝統的なタイムスタンプ@samp{Thu Feb 21 23:30:39
2002}が使用されます．

@c You can change the header's content with the
@c @option{--label=@var{label}} option; see @ref{Alternate Names}.
@c 
ヘッダの内容を@option{--label=@var{label}}オプションを使用して変更するこ
とが可能です．@ref{Alternate Names}を参照してください．

@c Next come one or more hunks of differences; each hunk shows one area
@c where the files differ.  Context format hunks look like this:
@c 
次に一つ以上の差異のhunkが続きます．それぞれのhunkはファイルの差異のある
部分の一つの領域を表示します．周りの文を使用した書式では，hunkは以下のよ
うになります．

@example
***************
*** @var{from-file-line-range} ****
  @var{from-file-line}
  @var{from-file-line}@dots{}
--- @var{to-file-line-range} ----
  @var{to-file-line}
  @var{to-file-line}@dots{}
@end example

@c The lines of context around the lines that differ start with two space
@c characters.  The lines that differ between the two files start with one
@c of the following indicator characters, followed by a space character:
@c 
差異のある行の周りの行は，二つのスペース文字を用いて開始されます．二つの
ファイル間で異なっている行は，以下の識別文字の一つで開始され，スペース文
字が続きます．

@table @samp
@item !
@c A line that is part of a group of one or more lines that changed between
@c the two files.  There is a corresponding group of lines marked with
@c @samp{!} in the part of this hunk for the other file.
@c 
二つのファイル間で変更されている一行以上のまとまった部分の行です．この
hunk部分の@samp{!}で印が付いている行のまとまりに対応するものが，もう一方
のファイルに存在します．

@item +
@c An ``inserted'' line in the second file that corresponds to nothing in
@c the first file.
@c 
最初のファイルには対応するものが無い，二番目のファイルに``挿入された''行
です．

@item -
@c A ``deleted'' line in the first file that corresponds to nothing in the
@c second file.
@c 
二番目のファイルには対応するものが無い，最初のファイルから``削除された'' 
行です．
@end table

@c If all of the changes in a hunk are insertions, the lines of
@c @var{from-file} are omitted.  If all of the changes are deletions, the
@c lines of @var{to-file} are omitted.
@c 
hunkの変更がすべて挿入されたものの場合，@var{from-file}の行は省略されま
す．変更のすべてが削除の場合，@var{to-file}の行は省略されます．

@node Example Context
@c @subsubsection An Example of Context Format
@subsubsection 周りの文を使用した書式の例

@c Here is the output of @samp{diff -c lao tzu} (@pxref{Sample diff Input},
@c for the complete contents of the two files).  Notice that up to three
@c lines that are not different are shown around each line that is
@c different; they are the context lines.  Also notice that the first two
@c hunks have run together, because their contents overlap.
@c 
コマンド@samp{diff -c lao tzu}の出力は以下のようになります(完全な二つの
ファイルの内容は@pxref{Sample diff Input})．差の無い行が三行になるまで，
差がある行の周りの行が表示されていることに注目してください．それらは周り
の文の行です．周りの文が重なっているため，最初の二つのhunkは一緒になって
いることにも注目してください．

@example
*** lao	2002-02-21 23:30:39.942229878 -0800
--- tzu	2002-02-21 23:30:50.442260588 -0800
***************
*** 1,7 ****
- The Way that can be told of is not the eternal Way;
- The name that can be named is not the eternal name.
  The Nameless is the origin of Heaven and Earth;
! The Named is the mother of all things.
  Therefore let there always be non-being,
    so we may see their subtlety,
  And let there always be being,
--- 1,6 ----
  The Nameless is the origin of Heaven and Earth;
! The named is the mother of all things.
! 
  Therefore let there always be non-being,
    so we may see their subtlety,
  And let there always be being,
***************
*** 9,11 ****
--- 8,13 ----
  The two are the same,
  But after they are produced,
    they have different names.
+ They both may be called deep and profound.
+ Deeper and more profound,
+ The door of all subtleties!
@end example

@node Less Context
@c @subsubsection An Example of Context Format with Less Context
@subsubsection より少ない周りの文を用いた，周りの文を使用した書式の例

@c Here is the output of @samp{diff -C 1 lao tzu} (@pxref{Sample diff
@c Input}, for the complete contents of the two files).  Notice that at
@c most one context line is reported here.
@c 
コマンド@samp{diff -C 1 lao tzu}の出力は以下のようになります(完全な二つ
のファイルの内容は@pxref{Sample diff Input})．ここでは最大一行が報告され
ていることに注目してください．

@example
*** lao	2002-02-21 23:30:39.942229878 -0800
--- tzu	2002-02-21 23:30:50.442260588 -0800
***************
*** 1,5 ****
- The Way that can be told of is not the eternal Way;
- The name that can be named is not the eternal name.
  The Nameless is the origin of Heaven and Earth;
! The Named is the mother of all things.
  Therefore let there always be non-being,
--- 1,4 ----
  The Nameless is the origin of Heaven and Earth;
! The named is the mother of all things.
! 
  Therefore let there always be non-being,
***************
*** 11 ****
--- 10,13 ----
    they have different names.
+ They both may be called deep and profound.
+ Deeper and more profound,
+ The door of all subtleties!
@end example

@node Unified Format
@c @subsection Unified Format
@subsection 一体化した書式
@cindex unified output format
@cindex @samp{+-} output format

@c The unified output format is a variation on the context format that is
@c more compact because it omits redundant context lines.  To select this
@c output format, use the @option{-U @var{lines}},
@c @option{--unified@r{[}=@var{lines}@r{]}}, or @option{-u}
@c option.  The argument @var{lines} is the number of lines of context to
@c show.  When it is not given, it defaults to three.
@c 
一体化した出力書式は周りの文を使用した書式の変形で，冗長な周りの行を省略
していて，よりコンパクトになっています．この出力書式を選択するため，
@option{-U @var{lines}}，@option{--unified@r{[}=@var{lines}@r{]}}，また
は@option{-u}オプションを使用してください．引数@var{lines}は，表示する周
りの行数です．与えられていないとき，デフォルトは三行です．

@c At present, only @sc{gnu} @command{diff} can produce this format and
@c only @sc{gnu} @command{patch} can automatically apply diffs in this
@c format.  For proper operation, @command{patch} typically needs at
@c least three lines of context.
@c 
現在，@sc{gnu} @command{diff}だけがこの書式を生成することが可能で，
@sc{gnu} @command{patch}だけがこの書式の差分を自動的に適用することが可能
です．適切に処理するため，@command{patch}は通常，少なくとも周りの三行を
必要とします．

@menu
* Detailed Unified:: A detailed description of unified format.
* Example Unified::  Sample output in unified format.
@end menu

@node Detailed Unified
@c @subsubsection Detailed Description of Unified Format
@subsubsection 一体化した書式の詳細な記述

@c The unified output format starts with a two-line header, which looks
@c like this:
@c 
一体化した出力書式は二行のヘッダで開始され，それは以下のようになります．

@example
--- @var{from-file} @var{from-file-modification-time}
+++ @var{to-file} @var{to-file-modification-time}
@end example

@noindent
@cindex time stamp format, unified diffs
@c The time stamp looks like @samp{2002-02-21 23:30:39.942229878 -0800}
@c to indicate the date, time with fractional seconds, and time zone.
@c 
タイムスタンプは，日付，有理数の秒を使用した時間，そして
@uref{ftp://ftp.isi.edu/in-notes/rfc2822.txt, Internet RFC 2822 format} 
のタイムゾーンを示すため@samp{2002-02-21 23:30:39.942229878 -0800}のよう
になります．

@c You can change the header's content with the
@c @option{--label=@var{label}} option; see @xref{Alternate Names}.
@c 
ヘッダの内容を，@option{--label=@var{label}}オプションを用いて変更するこ
とが可能です．@ref{Alternate Names}を参照してください．

@c Next come one or more hunks of differences; each hunk shows one area
@c where the files differ.  Unified format hunks look like this:
@c 
次に，差異部分のhunkが一つ以上続きます．それぞれのhunkはファイルの差異部
分の一つの領域を表示します．一体化した書式のhunkは以下のようになります．

@example
@@@@ @var{from-file-range} @var{to-file-range} @@@@
 @var{line-from-either-file}
 @var{line-from-either-file}@dots{}
@end example

@c The lines common to both files begin with a space character.  The lines
@c that actually differ between the two files have one of the following
@c indicator characters in the left print column:
@c 
両方のファイルでの共通部分は，スペース文字で開始されます．二つのファイル
間で実際に差のある行には，以下の左側の列に出力されている指示文字の一つが
あります．

@table @samp
@item +
@c A line was added here to the first file.
@c 
最初のファイルの，ここに一行追加されました．

@item -
@c A line was removed here from the first file.
@c 
最初のファイルから，ここの一行が削除されました．
@end table

@node Example Unified
@c @subsubsection An Example of Unified Format
@subsubsection 一体化した書式の例

@c Here is the output of the command @samp{diff -u lao tzu}
@c (@pxref{Sample diff Input}, for the complete contents of the two files):
@c 
以下は，コマンド@samp{diff -u lao tzu}の出力です(二つのファイルの内容の
完全なものは，@pxref{Sample diff Input})．

@example
--- lao	2002-02-21 23:30:39.942229878 -0800
+++ tzu	2002-02-21 23:30:50.442260588 -0800
@@@@ -1,7 +1,6 @@@@
-The Way that can be told of is not the eternal Way;
-The name that can be named is not the eternal name.
 The Nameless is the origin of Heaven and Earth;
-The Named is the mother of all things.
+The named is the mother of all things.
+
 Therefore let there always be non-being,
   so we may see their subtlety,
 And let there always be being,
@@@@ -9,3 +8,6 @@@@
 The two are the same,
 But after they are produced,
   they have different names.
+They both may be called deep and profound.
+Deeper and more profound,
+The door of all subtleties!
@end example

@node Sections
@c @subsection Showing Which Sections Differences Are in
@subsection 差異のある領域が存在するセクションの表示
@cindex headings
@cindex section headings

@c Sometimes you might want to know which part of the files each change
@c falls in.  If the files are source code, this could mean which function
@c was changed.  If the files are documents, it could mean which chapter or
@c appendix was changed.  @sc{gnu} @command{diff} can show this by displaying the
@c nearest section heading line that precedes the differing lines.  Which
@c lines are ``section headings'' is determined by a regular expression.
@c 
それぞれの変更がファイルのどの部分かを知りたいときもあるでしょう．ファイ
ルがソースコードの場合，これは変更された関数を意味します．ファイルがドキュ
メントの場合，変更された章や付録を意味します．@sc{gnu} @command{diff}で
は，差異のある行の前にあるセクション見出し行で最も近くにあるものを表示す
ることで，これを示すことが可能です．``セクション見出し''の行は，正規表現
で決定されます．

@menu
* Specified Headings::  Showing headings that match regular expressions.
* C Function Headings:: Showing headings of C functions.
@end menu

@node Specified Headings
@c @subsubsection Showing Lines That Match Regular Expressions
@subsubsection 正規表現にマッチする行を表示する
@cindex specified headings
@cindex regular expression matching headings

@c To show in which sections differences occur for files that are not
@c source code for C or similar languages, use the @option{-F @var{regexp}}
@c or @option{--show-function-line=@var{regexp}} option.  @command{diff}
@c considers lines that match the @command{grep}-style regular expression
@c @var{regexp} to be the beginning of a section of the file.  Here are
@c suggested regular expressions for some common languages:
@c 
Cやそれに似た言語以外のソースコードのファイルで差異が生じたセクションを
表示するために，@option{-F @var{regexp}}や
@option{--show-function-line=@var{regexp}}オプションを使用してください．
@command{diff}は，@command{grep}形式の正規表現@var{regexp}にマッチした行
が，ファイルのセクションの先頭だと考えます．いくつかの一般的な言語に対す
る正規表現を以下で提案します．

@c Please add to this list, e.g. Fortran, Pascal, Perl, Python.
@table @samp
@item ^[[:alpha:]$_]
C, C++, Prolog
@item ^(
Lisp
@item ^@@node
Texinfo
@end table

@c This option does not automatically select an output format; in order to
@c use it, you must select the context format (@pxref{Context Format}) or
@c unified format (@pxref{Unified Format}).  In other output formats it
@c has no effect.
@c 
このオプションでは出力書式を自動的に選択しません．それを使用するために，
周りの文を使用した書式(@pxref{Context Format})や，一体化した書式
(@pxref{Unified Format})を選択する必要があります．それ以外の出力書式では
効果はありません．

@c The @option{-F} and @option{--show-function-line} options find the nearest
@c unchanged line that precedes each hunk of differences and matches the
@c given regular expression.  Then they add that line to the end of the
@c line of asterisks in the context format, or to the @samp{@@@@} line in
@c unified format.  If no matching line exists, they leave the output for
@c that hunk unchanged.  If that line is more than 40 characters long, they
@c output only the first 40 characters.  You can specify more than one
@c regular expression for such lines; @command{diff} tries to match each line
@c against each regular expression, starting with the last one given.  This
@c means that you can use @option{-p} and @option{-F} together, if you wish.
@c 
@option{-F}と@option{--show-function-line}オプションで，差異があるそれぞ
れのhunkの前にある変更されていない最も近い行で与えられた正規表現にマッチ
する行を見つけます．そしてその行を，周りの文を使用した書式のアスタリスク
がある行の終りに，または一体化した書式の@samp{@@@@}行に追加します．マッ
チする行がない場合は，そのまま変更されずに，hunk出力に出力されます．その
行が40文字以上の場合，それらは最初の40文字だけ出力されます．そのような行
に対し，一つ以上の正規表現を指定することが可能です．@command{diff}は，そ
れぞれの行に対しそれぞれの正規表現にマッチすることを，最後に与えられたも
のから試します．これは，希望があれば@option{-p}と@option{-F}を一緒に使用
することが可能だということを意味します．

@node C Function Headings
@c @subsubsection Showing C Function Headings
@subsubsection Cの関数の見出しを表示する
@cindex C function headings
@cindex function headings, C

@c To show in which functions differences occur for C and similar
@c languages, you can use the @option{-p} or @option{--show-c-function} option.
@c This option automatically defaults to the context output format
@c (@pxref{Context Format}), with the default number of lines of context.
@c You can override that number with @option{-C @var{lines}} elsewhere in the
@c command line.  You can override both the format and the number with
@c @option{-U @var{lines}} elsewhere in the command line.
@c 
Cとそれに似た言語で差異の生じた関数を表示するために，@option{-p}や
@option{--show-c-function}オプションを使用することが可能です．このオプショ
ンで，デフォルトの周りの文の行数を用いた周りの文を使用した出力書式を自動
的にデフォルトにします(@pxref{Context Format})．コマンドラインのどこかで
@option{-C @var{lines}}を用いることで，その行数に優先させること可能です．
コマンドラインのどこかで@option{-U @var{lines}}を用いることで，その書式
と行数に優先させることが可能です．

@c The @option{-p} and @option{--show-c-function} options are equivalent to
@c @option{-F '^[[:alpha:]$_]'} if the unified format is specified, otherwise
@c @option{-c -F '^[[:alpha:]$_]'} (@pxref{Specified Headings}).  @sc{gnu}
@c @command{diff} provides them for the sake of convenience.
@c 
@option{-p}と@option{--show-c-function}オプションは，一体化した書式が指
定されている場合，@option{-F '^[[:alpha:]$_]'}と同じで，それ以外では
@option{-c -F '^[[:alpha:]$_]'}と同じです(@pxref{Specified Headings})．
@sc{gnu} @command{diff}は利便性を目的としてそれらを提供しています．

@node Alternate Names
@c @subsection Showing Alternate File Names
@subsection ファイル名の代替物を表示する
@cindex alternate file names
@cindex file name alternates

@c If you are comparing two files that have meaningless or uninformative
@c names, you might want @command{diff} to show alternate names in the header
@c of the context and unified output formats.  To do this, use the
@c @option{--label=@var{label}} option.  The first time
@c you give this option, its argument replaces the name and date of the
@c first file in the header; the second time, its argument replaces the
@c name and date of the second file.  If you give this option more than
@c twice, @command{diff} reports an error.  The @option{--label} option does not
@c affect the file names in the @command{pr} header when the @option{-l} or
@c @option{--paginate} option is used (@pxref{Pagination}).
@c 
意味が無かったり情報として価値の無い名前を持つ二つのファイルを比較する場
合，周りの文を利用したり一体化した出力書式のヘッダに，名前の変わりのもの
を@command{diff}で表示させたいかもしれません．こうするために
@option{--label=@var{label}}オプションを使用してください．最初にこのオプ
ションを与えると，ヘッダ内の最初のファイルの名前と日付をその引数で置換し，
二回与えると，ヘッダ内の二番目のファイルの名前と日付をその引数で置換しま
す．このオプションが二回以上与えられる場合，@command{diff} はエラーを報
告します．@option{--label}オプションは，@option{-l}や@option{--paginate} 
オプションが使用されている(@pxref{Pagination})とき，@command{pr}ヘッダ内
のファイル名に影響しません．

@c Here are the first two lines of the output from @samp{diff -C 2
@c --label=original --label=modified lao tzu}:
@c 
@samp{diff -C 2 --label=original --label=modified lao tzu}の出力の最初の
二行は以下のようになります．

@example
*** original
--- modified
@end example

@node Side by Side
@c @section Showing Differences Side by Side
@section 差異を並べて表示する
@cindex side by side
@cindex two-column output
@cindex columnar output

@c @command{diff} can produce a side by side difference listing of two files.
@c The files are listed in two columns with a gutter between them.  The
@c gutter contains one of the following markers:
@c 
@command{diff}では，二つのファイルの差異のリストを並べて生成することが可
能です．縦段落間の溝を用いてファイルは二列にリストアップされます．縦段落
間の溝は以下のマーカの一つを含んでいます．

@table @asis
@item white space
@c The corresponding lines are in common.  That is, either the lines are
@c identical, or the difference is ignored because of one of the
@c @option{--ignore} options (@pxref{White Space}).
@c 
共通の対応する行です．すなわち，それぞれの行は同じ，または
@option{--ignore}オプション(@pxref{White Space})の一つで無視されている差
しかありません．

@item @samp{|}
@c The corresponding lines differ, and they are either both complete
@c or both incomplete.
@c 
対応する行に差があり，両方とも完全または両方とも不完全です．

@item @samp{<}
@c The files differ and only the first file contains the line.
@c 
ファイルに差があり，最初のファイルだけに含まれている行です．

@item @samp{>}
@c The files differ and only the second file contains the line.
@c 
ファイルに差があり，二番目のファイルだけに含まれている行です．

@item @samp{(}
@c Only the first file contains the line, but the difference is ignored.
@c 
最初のファイルだけに含まれている行ですが，差異は無視されます．

@item @samp{)}
@c Only the second file contains the line, but the difference is ignored.
@c 
二番目のファイルだけに含まれている行ですが，差異は無視されます．

@item @samp{\}
@c The corresponding lines differ, and only the first line is incomplete.
@c 
対応する行に差があり，最初のファイルの行のみが不完全です．

@item @samp{/}
@c The corresponding lines differ, and only the second line is incomplete.
@c 
対応する行に差があり，二番目のファイルの行のみが不完全です．
@end table

@c Normally, an output line is incomplete if and only if the lines that it
@c contains are incomplete; @xref{Incomplete Lines}.  However, when an
@c output line represents two differing lines, one might be incomplete
@c while the other is not.  In this case, the output line is complete,
@c but its the gutter is marked @samp{\} if the first line is incomplete,
@c @samp{/} if the second line is.
@c 
通常出力行は，それは不完全な行が含まれている場合だけ不完全です．
@xref{Incomplete Lines}.  しかし，出力行が二つの差異のある行に表示される
とき，一方は不完全でもう一方はそうでないかもしれません．この状況では，出
力行は完全ですが，その縦段落間の溝は，最初の行が不完全な場合は@samp{\} 
で，二番目の行が不完全な場合は@samp{/}で印が付いています．

@c Side by side format is sometimes easiest to read, but it has limitations.
@c It generates much wider output than usual, and truncates lines that are
@c too long to fit.  Also, it relies on lining up output more heavily than
@c usual, so its output looks particularly bad if you use varying
@c width fonts, nonstandard tab stops, or nonprinting characters.
@c 
並べた書式が最も読み易いときもありますが，それには制限があります．それは
通常よりはるかに幅広の出力を生成し，長過ぎると切り詰められます．また，通
常より出力の整列状態に強く依存するので，可変幅フォント，標準的ではないタ
ブストップ，または表示不可能な文字を使用している場合，その出力は特に見栄
えが悪くなります．

@c You can use the @command{sdiff} command to interactively merge side by side
@c differences.  @xref{Interactive Merging}, for more information on merging files.
@c 
並べた差異を対話的にマージするために，@command{sdiff}コマンドを使用する
ことも可能です．ファイルのマージの詳細は，@xref{Interactive Merging}.

@menu
* Side by Side Format::  Controlling side by side output format.
* Example Side by Side:: Sample side by side output.
@end menu

@node Side by Side Format
@c @subsection Controlling Side by Side Format
@subsection 並べた書式の制御
@cindex side by side format

@c The @option{-y} or @option{--side-by-side} option selects side by side
@c format.  Because side by side output lines contain two input lines, the
@c output is wider than usual: normally 130 print columns, which can fit
@c onto a traditional printer line.  You can set the width of the output
@c with the @option{-W @var{columns}} or @option{--width=@var{columns}}
@c option.  The output is split into two halves of equal width, separated by a
@c small gutter to mark differences; the right half is aligned to a tab
@c stop so that tabs line up.  Input lines that are too long to fit in half
@c of an output line are truncated for output.
@c 
@option{-y}や@option{--side-by-side}オプションで並べた書式を選択します．
並んでいる出力行には二つの入力行が含まれるので，出力は通常より幅広になり
ます．通常は130列出力され，それは伝統的なプリンタの行に適しているはずで
す．出力の幅を@option{-W @var{columns}}や@option{--width=@var{columns}} 
オプションを用いて設定することが可能です．出力は同じ幅で半分に分けられ，
差異に印を付ける小さな縦段落間の溝で分けられています．入力行が長過ぎて出
力の半分に適さないものは，出力で切り詰められます．

@c The @option{--left-column} option prints only the left column of two
@c common lines.  The @option{--suppress-common-lines} option suppresses
@c common lines entirely.
@c 
@option{--left-column}オプションで，二つの共通列の左の列のみ出力します．
@option{--suppress-common-lines}オプションで，完全に共通の行の出力を抑制
します．

@node Example Side by Side
@c @subsection An Example of Side by Side Format
@subsection 並べた出力の例

@c Here is the output of the command @samp{diff -y -W 72 lao tzu}
@c (@pxref{Sample diff Input}, for the complete contents of the two files).
@c 
コマンド@samp{diff -y -W 72 lao tzu}の出力は以下のようになります(二つの
ファイルの完全な内容は，@pxref{Sample diff Input})．

@example
The Way that can be told of is n   <
The name that can be named is no   <
The Nameless is the origin of He        The Nameless is the origin of He
The Named is the mother of all t   |    The named is the mother of all t
                                   >
Therefore let there always be no        Therefore let there always be no
  so we may see their subtlety,           so we may see their subtlety,
And let there always be being,          And let there always be being,
  so we may see their outcome.            so we may see their outcome.
The two are the same,                   The two are the same,
But after they are produced,            But after they are produced,
  they have different names.              they have different names.
                                   >    They both may be called deep and
                                   >    Deeper and more profound,
                                   >    The door of all subtleties!
@end example

@node Scripts
@c @section Making Edit Scripts
@section 編集スクリプトの作成
@cindex script output formats

@c Several output modes produce command scripts for editing @var{from-file}
@c to produce @var{to-file}.
@c 
出力モードには，@var{to-file}を生成するために@var{from-file}ファイルを編
集する，コマンドスクリプトを生成するものもあります．

@menu
* ed Scripts:: Using @command{diff} to produce commands for @command{ed}.
* Forward ed:: Making forward @command{ed} scripts.
* RCS::        A special @command{diff} output format used by @sc{rcs}.
@end menu

@node ed Scripts
@c @subsection @command{ed} Scripts
@subsection @command{ed}スクリプト
@cindex @command{ed} script output format

@c @command{diff} can produce commands that direct the @command{ed} text editor
@c to change the first file into the second file.  Long ago, this was the
@c only output mode that was suitable for editing one file into another
@c automatically; today, with @command{patch}, it is almost obsolete.  Use the
@c @option{-e} or @option{--ed} option to select this output format.
@c 
@command{diff}で，@command{ed}テキストエディタに最初のファイルを二番目の
ファイルに変更するように指示するコマンドを生成することが可能です．以前は
これが，あるファイルをもう一つのファイルに自動的に編集することに適した唯
一の出力モードでした．現在は，@command{patch}を用いることになり，それは
もう時代遅れです．この出力書式を選択するために，@option{-e}や
@option{--ed}オプションを使用してください．

@c Like the normal format (@pxref{Normal}), this output format does not
@c show any context; unlike the normal format, it does not include the
@c information necessary to apply the diff in reverse (to produce the first
@c file if all you have is the second file and the diff).
@c 
通常の書式(@pxref{Normal})同様，この出力書式では周りの文を全く表示しませ
ん．通常の書式とは異なり，(二番目のファイルと差分がある場合，最初のファ
イルを生成するために)逆に差分を適用するのに必要な情報を含んでいません．

@c If the file @file{d} contains the output of @samp{diff -e old new}, then
@c the command @samp{(cat d && echo w) | ed - old} edits @file{old} to make
@c it a copy of @file{new}.  More generally, if @file{d1}, @file{d2},
@c @dots{}, @file{dN} contain the outputs of @samp{diff -e old new1},
@c @samp{diff -e new1 new2}, @dots{}, @samp{diff -e newN-1 newN},
@c respectively, then the command @samp{(cat d1 d2 @dots{} dN && echo w) |
@c ed - old} edits @file{old} to make it a copy of @file{newN}.
@c 
ファイル@file{d}に@samp{diff -e old new}の出力が含まれている場合，コマン
ド@samp{(cat d && echo w) | ed - old}で@file{old}が@file{new}のコピーに
なるように編集します．より一般的には，@file{d1}，@file{d2}，@dots{}，
@file{dN}がそれぞれ，@samp{diff -e old new1}，@samp{diff -e new1 new2}，
@dots{}，@samp{diff -e newN-1 newN}の出力になっている場合，@samp{(cat d1
d2 @dots{} dN && echo w) | ed - old}で@file{old}が@file{new}のコピーにな
るように編集します．

@menu
* Detailed ed:: A detailed description of @command{ed} format.
* Example ed::  A sample @command{ed} script.
@end menu

@node Detailed ed
@c @subsubsection Detailed Description of @command{ed} Format
@subsubsection @command{ed}書式の詳細な記述

@c The @command{ed} output format consists of one or more hunks of
@c differences.  The changes closest to the ends of the files come first so
@c that commands that change the number of lines do not affect how
@c @command{ed} interprets line numbers in succeeding commands.  @command{ed}
@c format hunks look like this:
@c 
@command{ed}出力書式は，一つ以上の差異部分のhunkから成り立ちます．複数行
を変更するコマンドで，@command{ed}コマンドの成功によって行番号を解釈する
方法に影響しないように，ファイルの終りに近い変更が最初に来ます．
@command{ed}書式のhunkは以下のようになります．

@example
@var{change-command}
@var{to-file-line}
@var{to-file-line}@dots{}
.
@end example

@c Because @command{ed} uses a single period on a line to indicate the end of
@c input, @sc{gnu} @command{diff} protects lines of changes that contain a single
@c period on a line by writing two periods instead, then writing a
@c subsequent @command{ed} command to change the two periods into one.  The
@c @command{ed} format cannot represent an incomplete line, so if the second
@c file ends in a changed incomplete line, @command{diff} reports an error and
@c then pretends that a newline was appended.
@c 
@command{ed}は行中のピリオドを入力の終りを示すものとして使用するので，
@sc{gnu} @command{diff}は，行中の単一のピリオドを二つのピリオドとして書
き込み，それに続く@command{ed}コマンドで二つのピリオドを一つに変更するこ
とで，変更された行を保護します．@command{ed}書式は不完全な行を表現するこ
とが不可能なので，二番目のファイルの終りが変更のある不完全な行の場合，
@command{diff}はエラーを報告し，改行を追加するように要求します．

@c There are three types of change commands.  Each consists of a line
@c number or comma-separated range of lines in the first file and a single
@c character indicating the kind of change to make.  All line numbers are
@c the original line numbers in the file.  The types of change commands
@c are:
@c 
三種類の変更コマンドがあります．それぞれ，最初のファイルの行番号やカンマ
で分離されている行の範囲と変更させる手法を示す単一文字から成り立ちます．
すべての行番号は，ファイルの元々の行番号です．変更コマンドの種類は以下の
とおりです．

@table @samp
@item @var{l}a
@c Add text from the second file after line @var{l} in the first file.  For
@c example, @samp{8a} means to add the following lines after line 8 of file
@c 1.
@c 
最初のファイルの@var{l}行目の後に二番目のファイルからのテキストを追加し
ます．例えば@samp{8a}は，ファイル1の8行目以降に，それに続く行を追加しま
す．

@item @var{r}c
@c Replace the lines in range @var{r} in the first file with the following
@c lines.  Like a combined add and delete, but more compact.  For example,
@c @samp{5,7c} means change lines 5--7 of file 1 to read as the text file
@c 2.
@c 
最初のファイルの範囲@var{r}の行を，それに続く行で置換します．追加と削除
の組み合わせに似ていますが，よりコンパクトです．例えば@samp{5,7c}は，ファ
イル1の5--7行をファイル2のテキストで変更することを意味します．

@item @var{r}d
@c Delete the lines in range @var{r} from the first file.  For example,
@c @samp{5,7d} means delete lines 5--7 of file 1.
@c 
最初のファイルから範囲@var{r}の行を削除します．例えば，@samp{5,7d}は，ファ
イル1の5--7行を削除することを意味します．
@end table

@node Example ed
@c @subsubsection Example @command{ed} Script
@subsubsection @command{ed}スクリプトの例

@c Here is the output of @samp{diff -e lao tzu} (@pxref{Sample
@c diff Input}, for the complete contents of the two files):
@c 
@samp{diff -e lao tzu}の出力は以下のようになります(二つのファイルの完全
な内容は，@pxref{Sample diff Input})．

@example
11a
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!
.
4c
The named is the mother of all things.

.
1,2d
@end example

@node Forward ed
@c @subsection Forward @command{ed} Scripts
@subsection 前置@command{ed}スクリプト
@cindex forward @command{ed} script output format

@c @command{diff} can produce output that is like an @command{ed} script, but
@c with hunks in forward (front to back) order.  The format of the commands
@c is also changed slightly: command characters precede the lines they
@c modify, spaces separate line numbers in ranges, and no attempt is made
@c to disambiguate hunk lines consisting of a single period.  Like
@c @command{ed} format, forward @command{ed} format cannot represent incomplete
@c lines.
@c 
@command{diff}で@command{ed}スクリプトのような出力を生成することが可能で
すが，hunkは(前のものを後ろにする)前方への順序を用いています．コマンドの
書式を若干変更することも可能です．それは，変更した行の前にコマンド文字前
置すること，範囲をスペースで分離した行番号にすること，そして，単一のピリ
オドから成り立つhunk行を明示する試みを行なわないことです．@command{ed}書
式のように，前置@command{ed}書式は，不完全な行を表現することは不可能です．

@c Forward @command{ed} format is not very useful, because neither @command{ed}
@c nor @command{patch} can apply diffs in this format.  It exists mainly for
@c compatibility with older versions of @command{diff}.  Use the @option{-f} or
@c @option{--forward-ed} option to select it.
@c 
前置@command{ed}書式は，@command{ed}でも@command{patch}でもこの書式の差
分を適用することが不可能なので，ほとんど役に立ちません．それは主に，古い
バージョンの@command{diff}との互換性のために存在しています．それを選択す
るために，@option{-f}や@option{--forward-ed}オプションを使用してください．

@node RCS
@c @subsection @sc{rcs} Scripts
@subsection @sc{rcs}スクリプト
@cindex @sc{rcs} script output format

@c The @sc{rcs} output format is designed specifically for use by the Revision
@c Control System, which is a set of free programs used for organizing
@c different versions and systems of files.  Use the @option{-n} or
@c @option{--rcs} option to select this output format.  It is like the
@c forward @command{ed} format (@pxref{Forward ed}), but it can represent
@c arbitrary changes to the contents of a file because it avoids the
@c forward @command{ed} format's problems with lines consisting of a single
@c period and with incomplete lines.  Instead of ending text sections with
@c a line consisting of a single period, each command specifies the number
@c of lines it affects; a combination of the @samp{a} and @samp{d}
@c commands are used instead of @samp{c}.  Also, if the second file ends
@c in a changed incomplete line, then the output also ends in an
@c incomplete line.
@c 
@sc{rcs}出力書式は，異なるファイルのバージョンとシステムを管理するために
使用するフリープログラム，Revision Control Systemで使用するために設計さ
れています．この出力書式を選択するために，@option{-n}や@option{--rcs}を
使用してください．前に書いた@command{ed}書式(@pxref{Forward ed})に似てい
ますが，それは前に書いた@command{ed}書式の単一のピリオドを含む行と不完全
な行の問題を避けているので，ファイルの内容の任意の変更を表現することが可
能です．単一のピリオドを含む行でテキストセクションを終える変わりに，それ
ぞれのコマンドで影響する行数を指定します．@samp{a}と@samp{d}を組み合わせ
たコマンドが，@samp{c}の変わりに使用されます．また，二番目のファイルが変
更されている不完全な行で終る場合，出力も不完全な行で終ります．

@c Here is the output of @samp{diff -n lao tzu} (@pxref{Sample
@c diff Input}, for the complete contents of the two files):
@c 
@samp{diff -n lao tzu}の出力は以下のようになります(二つのファイルの完全
な内容は，@pxref{Sample diff Input})．

@example
d1 2
d4 1
a4 2
The named is the mother of all things.

a11 3
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!
@end example

@node If-then-else
@c @section Merging Files with If-then-else
@section If-then-elseを用いたファイルのマージ
@cindex merged output format
@cindex if-then-else output format
@cindex C if-then-else output format
@cindex @command{ifdef} output format

@c You can use @command{diff} to merge two files of C source code.  The output
@c of @command{diff} in this format contains all the lines of both files.
@c Lines common to both files are output just once; the differing parts are
@c separated by the C preprocessor directives @code{#ifdef @var{name}} or
@c @code{#ifndef @var{name}}, @code{#else}, and @code{#endif}.  When
@c compiling the output, you select which version to use by either defining
@c or leaving undefined the macro @var{name}.
@c 
二つのCソースコードをマージするために@command{diff}を使用することが可能
です．この書式の@command{diff}の出力は，両方のファイルのすべての行を含み
ます．両方のファイルに共通の行は，一回だけ出力されます．差異のある部分は，
Cプリプロセッサの指示語の@code{#ifdef @var{name}}や@code{#ifndef
@var{name}}，@code{#else}，そして@code{#endif}で分離されています．出力を
コンパイルするとき，マクロ@var{name}を定義したり未定義にしたりすることで，
バージョンを選択します．

@c To merge two files, use @command{diff} with the @option{-D @var{name}} or
@c @option{--ifdef=@var{name}} option.  The argument @var{name} is the C
@c preprocessor identifier to use in the @code{#ifdef} and @code{#ifndef}
@c directives.
@c 
二つのファイルをマージするために，@option{-D @var{name}}や
@option{--ifdef=@var{name}}オプションを用いて@command{diff}を使用してく
ださい．引数の@var{name}は，@code{#ifdef}と@code{#ifndef}といった指示語
で使用するCプリプロセッサの識別子です．

@c For example, if you change an instance of @code{wait (&s)} to
@c @code{waitpid (-1, &s, 0)} and then merge the old and new files with
@c the @option{--ifdef=HAVE_WAITPID} option, then the affected part of your code
@c might look like this:
@c 
例えば，@code{wait (&s)}の文を@code{waitpid (-1, &s, 0)}に変更し，新旧の
ファイルを@option{--ifdef=HAVE_WAITPID}オプションを用いてマージした場合，
影響する部分のコードは以下のようになるでしょう．

@example
    do @{
#ifndef HAVE_WAITPID
        if ((w = wait (&s)) < 0  &&  errno != EINTR)
#else /* HAVE_WAITPID */
        if ((w = waitpid (-1, &s, 0)) < 0  &&  errno != EINTR)
#endif /* HAVE_WAITPID */
            return w;
    @} while (w != child);
@end example

@c You can specify formats for languages other than C by using line group
@c formats and line formats, as described in the next sections.
@c 
次のセクションで説明する，行のグループを使用した書式と，行の書式を使用す
ることで，C以外の言語に対する書式を指定することが可能です．

@menu
* Line Group Formats::    Formats for general if-then-else line groups.
* Line Formats::          Formats for each line in a line group.
* Detailed If-then-else:: A detailed description of if-then-else format.
* Example If-then-else::  Sample if-then-else format output.
@end menu

@node Line Group Formats
@c @subsection Line Group Formats
@subsection 行のグループを使用した書式
@cindex line group formats
@cindex formats for if-then-else line groups

@c Line group formats let you specify formats suitable for many
@c applications that allow if-then-else input, including programming
@c languages and text formatting languages.  A line group format specifies
@c the output format for a contiguous group of similar lines.
@c 
行のグループを使用した書式で，プログラミング言語とテキストの書式化言語が
含まれる，if-then-elseの入力が可能な多くのアプリケーションに適した書式を
指定することができます．行のグループを使用した書式で，類似した行の連続し
たグループに対して出力書式を指定します．

@c For example, the following command compares the TeX files @file{old}
@c and @file{new}, and outputs a merged file in which old regions are
@c surrounded by @samp{\begin@{em@}}-@samp{\end@{em@}} lines, and new
@c regions are surrounded by @samp{\begin@{bf@}}-@samp{\end@{bf@}} lines.
@c 
例えば，以下のコマンドで，@TeX{}ファイルの@file{old}と@file{new}を比較し，
古い領域の周りに@samp{\begin@{em@}}-@samp{\end@{em@}}行を書き，新しい領
域の周りに@samp{\begin@{bf@}}-@samp{\end@{bf@}}行を書くことで，出力をマー
ジします．

@example
diff \
   --old-group-format='\begin@{em@}
%<\end@{em@}
' \
   --new-group-format='\begin@{bf@}
%>\end@{bf@}
' \
   old new
@end example

@c The following command is equivalent to the above example, but it is a
@c little more verbose, because it spells out the default line group formats.
@c 
以下のコマンドは上記の例と等価ですが，デフォルトの行のグループを使用した
書式で綴っているので，若干冗長になっています．

@example
diff \
   --old-group-format='\begin@{em@}
%<\end@{em@}
' \
   --new-group-format='\begin@{bf@}
%>\end@{bf@}
' \
   --unchanged-group-format='%=' \
   --changed-group-format='\begin@{em@}
%<\end@{em@}
\begin@{bf@}
%>\end@{bf@}
' \
   old new
@end example

@c Here is a more advanced example, which outputs a diff listing with
@c headers containing line numbers in a ``plain English'' style.
@c 
以下はより高度な例で，``plain English''形式の行番号を含むヘッダを用いて
差分リストを出力します．

@example
diff \
   --unchanged-group-format='' \
   --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
%<' \
   --new-group-format='-------- %dN line%(N=1?:s) added after %de:
%>' \
   --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
%<-------- to:
%>' \
   old new
@end example

@c To specify a line group format, use @command{diff} with one of the options
@c listed below.  You can specify up to four line group formats, one for
@c each kind of line group.  You should quote @var{format}, because it
@c typically contains shell metacharacters.
@c 
行のグループを使用した書式を指定するために，以下でリストアップするオプショ
ンの一つを使用してください．行のグループを使用した書式のうち四つまで指定
することが可能で，それぞれの行のグループの種類になります．通常
@var{format}はシェルのメタ文字を含んでいるので，引用符で囲むべきです．

@table @option
@item --old-group-format=@var{format}
@c These line groups are hunks containing only lines from the first file.
@c The default old group format is the same as the changed group format if
@c it is specified; otherwise it is a format that outputs the line group as-is.
@c 
これらの行のグループは，最初のファイルの行だけに含まれているhunkです．デ
フォルトの古いグループの書式は，指定されている場合は変更されたグループの
書式と同じです．それ以外の場合，行のグループはそのまま出力される書式にな
ります．

@item --new-group-format=@var{format}
@c These line groups are hunks containing only lines from the second
@c file.  The default new group format is same as the changed group
@c format if it is specified; otherwise it is a format that outputs the
@c line group as-is.
@c 
これらの行のグループは，二番目のファイルの行だけに含まれているhunkです．
デフォルトの新しいグループの書式は，指定されている場合は変更されたグルー
プの書式と同じです．それ以外の場合，行のグループはそのまま出力される書式
になります．

@item --changed-group-format=@var{format}
@c These line groups are hunks containing lines from both files.  The
@c default changed group format is the concatenation of the old and new
@c group formats.
@c 
これらの行のグループは，両方のファイルの行を含んでいるhunkです．デフォル
トで，変更されたグループの書式は，新旧のグループの書式を連結したものにな
ります．

@item --unchanged-group-format=@var{format}
@c These line groups contain lines common to both files.  The default
@c unchanged group format is a format that outputs the line group as-is.
@c 
これらの行のグループは，両方のファイルに共通な行を含んでいます．デフォル
トで，変更されていないグループの書式は，行のグループをそのまま出力する書
式です．
@end table

@c In a line group format, ordinary characters represent themselves;
@c conversion specifications start with @samp{%} and have one of the
@c following forms.
@c 
行のグループを使用した書式では，通常の文字はそのまま表示されます．伝統的
な仕様は，@samp{%}で開始し以下の形式の一つが続きます．

@table @samp
@item %<
@c stands for the lines from the first file, including the trailing newline.
@c Each line is formatted according to the old line format (@pxref{Line Formats}).
@c 
最初のファイルからの行を意味し，それは最後の改行を含めます．それぞれの行
は，古い行の書式に依存して書式化されます(@pxref{Line Formats})．

@item %>
@c stands for the lines from the second file, including the trailing newline.
@c Each line is formatted according to the new line format.
@c 
二番目のファイルからの行を意味し，それは最後の改行を含めます．それぞれの
行は，新しい行の書式に依存して書式化されます．

@item %=
@c stands for the lines common to both files, including the trailing newline.
@c Each line is formatted according to the unchanged line format.
@c 
両方のファイルに共通な行を意味し，それは最後の改行を含めます．それぞれの
行は，変更されていない行の書式に依存して書式化されます．

@item %%
@c stands for @samp{%}.
@c 
@samp{%}を意味します．

@item %c'@var{C}'
@c where @var{C} is a single character, stands for @var{C}.
@c @var{C} may not be a backslash or an apostrophe.
@c For example, @samp{%c':'} stands for a colon, even inside
@c the then-part of an if-then-else format, which a colon would
@c normally terminate.
@c 
この@var{C}は単一文字で，@var{C}を意味します．@var{C}をバックスラッシュ
やアポストロフィーにしてはいけません．例えば，@samp{%c':'}はコロンを意味
し，if-then-else書式のthen-part内部ではコロンは通常終端文字ですが，その
ままの意味になります．

@item %c'\@var{O}'
@c where @var{O} is a string of 1, 2, or 3 octal digits,
@c stands for the character with octal code @var{O}.
@c For example, @samp{%c'\0'} stands for a null character.
@c 
この@var{O}は，1桁，2桁，または3桁の八進数で，8ビットコード@var{O}の文字
を意味します．例えば，@samp{%c'\0'}はヌル文字を意味します．

@item @var{F}@var{n}
@c where @var{F} is a @code{printf} conversion specification and @var{n} is one
@c of the following letters, stands for @var{n}'s value formatted with @var{F}.
@c 
この@var{F}は，@code{printf}の変換を指定し，@var{n}は以下の文字の一つに
なり，@var{F}で書式化される@var{n}の値を意味します．

@table @samp
@item e
@c The line number of the line just before the group in the old file.
@c 
古いファイルのグループの直前の行番号です．

@item f
@c The line number of the first line in the group in the old file;
@c equals @var{e} + 1.
@c 
古いファイルのグループの最初の行の行番号です．@var{e} + 1と同じです．

@item l
@c The line number of the last line in the group in the old file.
@c 
古いファイルのグループの最後の行の行番号です．

@item m
@c The line number of the line just after the group in the old file;
@c equals @var{l} + 1.
@c 
古いファイルのグループ直後の行番号です．@var{l} + 1と同じです．

@item n
@c The number of lines in the group in the old file; equals @var{l} - @var{f} + 1.
@c 
古いファイルのグループの行番号です．@var{l} - @var{f} + 1と同じです．

@item E, F, L, M, N
@c Likewise, for lines in the new file.
@c 
同様に，新しいファイルの行です．

@end table

@vindex LC_NUMERIC
@c The @code{printf} conversion specification can be @samp{%d},
@c @samp{%o}, @samp{%x}, or @samp{%X}, specifying decimal, octal,
@c lower case hexadecimal, or upper case hexadecimal output
@c respectively.  After the @samp{%} the following options can appear in
@c sequence: a series of zero or more flags; an integer
@c specifying the minimum field width; and a period followed by an
@c optional integer specifying the minimum number of digits.
@c The flags are @samp{-} for left-justification, @samp{'} for separating
@c the digit into groups as specified by the @env{LC_NUMERIC} locale category,
@c and @samp{0} for padding with zeros instead of spaces.
@c For example, @samp{%5dN} prints the number of new lines in the group
@c in a field of width 5 characters, using the @code{printf} format @code{"%5d"}.
@c 
@code{printf}の変換指定は，@samp{%d}，@samp{%o}，@samp{%x}，または
@samp{%X}が可能で，それぞれ，10進数，8進数，小文字の16進数，または大文字
の16進数の出力を指定します．@samp{%}の後に続くオプションを順番に表します．
ゼロ以上のフラグの列．最小フィールド幅の整数．そして，ピリオドに続く桁数
の最小値を指定する追加の整数．フラグは，左寄せに対する@samp{-}，
@env{LC_NUMERIC}ロケールのカテゴリで指定される，グループごとの桁数に分離
する@samp{'}，そして，スペースの変わりにゼロでパディングするための
@samp{0}です．例えば，@samp{%5dN}はグループの新しい行の数を，五文字幅の
フィールドで，@code{printf}の書式@code{"%5d"}で出力します．

@item (@var{A}=@var{B}?@var{T}:@var{E})
@c If @var{A} equals @var{B} then @var{T} else @var{E}.
@c @var{A} and @var{B} are each either a decimal constant
@c or a single letter interpreted as above.
@c This format spec is equivalent to @var{T} if
@c @var{A}'s value equals @var{B}'s; otherwise it is equivalent to @var{E}.
@c 
@var{A}が@var{B}に等しい場合は@var{T}，それ以外では@var{E}になります．
@var{A}と@var{B}はそれぞれ10進数の定数または上記で解釈される単一文字です．
この書式指定は，@var{A}の値が@var{B}の値に等しい場合は@var{T}と等価にな
ります．それ以外では@var{E}と等価になります．

@c For example, @samp{%(N=0?no:%dN) line%(N=1?:s)} is equivalent to
@c @samp{no lines} if @var{N} (the number of lines in the group in the the
@c new file) is 0, to @samp{1 line} if @var{N} is 1, and to @samp{%dN lines}
@c otherwise.
@c 
例えば@samp{%(N=0?no:%dN) line%(N=1?:s)}は，@var{N}(新しいファイルのグルー
プの行数)が0の場合は@samp{no lines}と等価で，@var{N}が1の場合は@samp{1
line}と等価で，それ以外の場合は@samp{%dN lines}と等価になります．
@end table

@node Line Formats
@c @subsection Line Formats
@subsection 行の書式
@cindex line formats

@c Line formats control how each line taken from an input file is
@c output as part of a line group in if-then-else format.
@c 
行の書式は，if-then-else書式での行のグループの部分として入力行から出力行
に持っていく行数を制御します．

@c For example, the following command outputs text with a one-character
@c change indicator to the left of the text.  The first character of output
@c is @samp{-} for deleted lines, @samp{|} for added lines, and a space for
@c unchanged lines.  The formats contain newline characters where newlines
@c are desired on output.
@c 
例えば，以下のコマンドは，テキストの左に変更を示す単一の文字を用いてテキ
ストを出力します．出力の最初の文字は，削除行に対する@samp{-}，追加行に対
する@samp{|}，そして変更されていない行に対するスペースです．その書式には，
出力に概況が必要な場所では，改行文字が含まれます．

@example
diff \
   --old-line-format='-%l
' \
   --new-line-format='|%l
' \
   --unchanged-line-format=' %l
' \
   old new
@end example

@c To specify a line format, use one of the following options.  You should
@c quote @var{format}, since it often contains shell metacharacters.
@c 
行の書式を指定するために，以下のオプションの一つを使用してください．シェ
ルのメタ文字を含むことが多いので，@var{format}を引用符で囲むべきです．

@table @option
@item --old-line-format=@var{format}
@c formats lines just from the first file.
@c 
最初のファイルからの行だけ書式化します．

@item --new-line-format=@var{format}
@c formats lines just from the second file.
@c 
二番目のファイルからの行だけ書式化します．

@item --unchanged-line-format=@var{format}
@c formats lines common to both files.
@c 
両方のファイルに共通の行を書式化します．

@item --line-format=@var{format}
@c formats all lines; in effect, it sets all three above options simultaneously.
@c 
すべての行を書式化します．影響として，上記の三つのオプションすべてを同時
に設定します．
@end table

@c In a line format, ordinary characters represent themselves;
@c conversion specifications start with @samp{%} and have one of the
@c following forms.
@c 
行の書式では，通常の文字はそれ自身を示します．変換指定は@samp{%}で始め，
以下の形式の一つを用います．

@table @samp
@item %l
@c stands for the contents of the line, not counting its trailing
@c newline (if any).  This format ignores whether the line is incomplete;
@c @xref{Incomplete Lines}.
@c 
行の内容を意味し，後置される改行は(存在しても)数えません．この書式は行が
不完全かどうかを無視します．@xref{Incomplete Lines}.

@item %L
@c stands for the contents of the line, including its trailing newline
@c (if any).  If a line is incomplete, this format preserves its
@c incompleteness.
@c 
行の内容を意味し，後置される改行を(存在する場合)含みます．行が不完全な場
合，この書式はその不完全さを保持します．

@item %%
@c stands for @samp{%}.
@c 
@samp{%}を意味します．

@item %c'@var{C}'
@c where @var{C} is a single character, stands for @var{C}.
@c @var{C} may not be a backslash or an apostrophe.
@c For example, @samp{%c':'} stands for a colon.
@c 
ここでの@var{C}は単一文字で，@var{C}を意味します．@var{C}をバックスラッ
シュにしたりアポストロフィーにしたりしてはいけません．例えば，
@samp{%c':'}はコロンを意味します．

@item %c'\@var{O}'
@c where @var{O} is a string of 1, 2, or 3 octal digits,
@c stands for the character with octal code @var{O}.
@c For example, @samp{%c'\0'} stands for a null character.
@c 
ここでの@var{O}は1桁，2桁，または3桁の8進数で，8進コード@var{O}の文字を
意味します．例えば，@samp{%c'\0'}はヌル文字を意味します．

@item @var{F}n
@c where @var{F} is a @code{printf} conversion specification,
@c stands for the line number formatted with @var{F}.
@c For example, @samp{%.5dn} prints the line number using the
@c @code{printf} format @code{"%.5d"}.  @xref{Line Group Formats}, for
@c more about printf conversion specifications.
@c 
ここでの@var{F}は@code{printf}の変換指定で，@var{F}で書式化された行番号
を意味します．例えば@samp{%.5dn}は，@code{printf}の書式@code{"%.5d"}を使
用して行番号を出力します．@code{printf}変換指定の詳細は，@xref{Line
Group Formats}.

@end table

@c The default line format is @samp{%l} followed by a newline character.
@c 
デフォルトの行の書式は，改行文字が続く@samp{%l}です．

@c If the input contains tab characters and it is important that they line
@c up on output, you should ensure that @samp{%l} or @samp{%L} in a line
@c format is just after a tab stop (e.g.@: by preceding @samp{%l} or
@c @samp{%L} with a tab character), or you should use the @option{-t} or
@c @option{--expand-tabs} option.
@c 
入力にタブ文字が含まれていて，それが出力行にとって重要な場合，行の書式の
@samp{%l}や@samp{%L}をタブの直後に書くか(例えば，@: @samp{%l} や
@samp{%L}を前置してタブ文字を使用します)，@option{-t}や
@option{--expand-tabs}オプションを使用すべきです．

@c Taken together, the line and line group formats let you specify many
@c different formats.  For example, the following command uses a format
@c similar to normal @command{diff} format.  You can tailor this command
@c to get fine control over @command{diff} output.
@c 
行と行のグループの書式を組み合わせると，様々な書式を指定することが可能に
なります．例えば以下のコマンドで，通常の@command{diff}の書式に似たものを
使用します．@command{diff}の出力を詳細に制御するために，このコマンドに手
を加えることも可能です．

@example
diff \
   --old-line-format='< %l
' \
   --new-line-format='> %l
' \
   --old-group-format='%df%(f=l?:,%dl)d%dE
%<' \
   --new-group-format='%dea%dF%(F=L?:,%dL)
%>' \
   --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
%<---
%>' \
   --unchanged-group-format='' \
   old new
@end example

@node Detailed If-then-else
@c @subsection Detailed Description of If-then-else Format
@subsection If-then-else書式の詳細な説明

@c For lines common to both files, @command{diff} uses the unchanged line
@c group format.  For each hunk of differences in the merged output
@c format, if the hunk contains only lines from the first file,
@c @command{diff} uses the old line group format; if the hunk contains only
@c lines from the second file, @command{diff} uses the new group format;
@c otherwise, @command{diff} uses the changed group format.
@c 
両方のファイルで共通の行に対し，@command{diff}は変更されていない行のグルー
プ書式を使用します．マージされた出力書式の差異部分のそれぞれのhunkに対し，
hunkが最初のファイルの行だけを含んでいる場合，@command{diff}は古い行のグ
ループ書式を使用します．hunkが二番目のファイルの行だけを含んでいる場合，
@command{diff}は新しい行のグループ書式を使用します．それ以外の場合，
@command{diff}は変更されたグループ書式を使用します．

@c The old, new, and unchanged line formats specify the output format of
@c lines from the first file, lines from the second file, and lines common
@c to both files, respectively.
@c 
古いもの，新しいもの，そして変更されている行の書式はそれぞれ，最初のファ
イルの行，二番目のファイルの行，そして両方のファイルに共通の行の出力書式
を指定します．

@c The option @option{--ifdef=@var{name}} is equivalent to
@c the following sequence of options using shell syntax:
@c 
オプション@option{--ifdef=@var{name}}は，以下のシェルの構文を使用した連
続したオプションと等価です．

@example
--old-group-format='#ifndef @var{name}
%<#endif /* ! @var{name} */
' \
--new-group-format='#ifdef @var{name}
%>#endif /* @var{name} */
' \
--unchanged-group-format='%=' \
--changed-group-format='#ifndef @var{name}
%<#else /* @var{name} */
%>#endif /* @var{name} */
'
@end example

@c You should carefully check the @command{diff} output for proper nesting.
@c For example, when using the @option{-D @var{name}} or
@c @option{--ifdef=@var{name}} option, you should check that if the
@c differing lines contain any of the C preprocessor directives
@c @samp{#ifdef}, @samp{#ifndef}, @samp{#else}, @samp{#elif}, or
@c @samp{#endif}, they are nested properly and match.  If they don't, you
@c must make corrections manually.  It is a good idea to carefully check
@c the resulting code anyway to make sure that it really does what you
@c want it to; depending on how the input files were produced, the output
@c might contain duplicate or otherwise incorrect code.
@c 
適切に入れ子状にするため，@command{diff}の出力を注意深く調べるべきです．
例えば，@option{-D @var{name}}や@option{--ifdef=@var{name}}オプションを
使用するとき，差異のある行がCのプリプロセッサの指示語の@samp{#ifdef}，
@samp{#ifndef}，@samp{#else}，@samp{#elif}，または@samp{#endif}を含んで
いるかどうかを調べるべきで，それらはおそらく入れ子状になっているのでマッ
チします．そうでない場合，手動で正しくする必要があります．望んだように本
当になっていることを確実にするため，コードの結果を注意深く調べるのは良い
考えです．入力ファイルが生成される方法に依存して，出力が二重になったもの
が含まれたり，正しくないコードになったりします．

@c The @command{patch} @option{-D @var{name}} option behaves like
@c the @command{diff} @option{-D @var{name}} option, except it operates on
@c a file and a diff to produce a merged file; @xref{patch Options}.
@c 
@command{patch} @option{-D @var{name}}オプションは，ファイルとマージされ
たファイルを生成する差分で処理を行なう以外，@command{diff} @option{-D
@var{name}}と同じように動作します．@xref{patch Options}.

@node Example If-then-else
@c @subsection An Example of If-then-else Format
@subsection If-then-else書式の例

@c Here is the output of @samp{diff -DTWO lao tzu} (@pxref{Sample
@c diff Input}, for the complete contents of the two files):
@c 
@samp{diff -DTWO lao tzu}の出力は以下のようになります(二つのファイルの完
全な内容は，@pxref{Sample diff Input})．

@example
#ifndef TWO
The Way that can be told of is not the eternal Way;
The name that can be named is not the eternal name.
#endif /* ! TWO */
The Nameless is the origin of Heaven and Earth;
#ifndef TWO
The Named is the mother of all things.
#else /* TWO */
The named is the mother of all things.

#endif /* TWO */
Therefore let there always be non-being,
  so we may see their subtlety,
And let there always be being,
  so we may see their outcome.
The two are the same,
But after they are produced,
  they have different names.
#ifdef TWO
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!
#endif /* TWO */
@end example

@node Incomplete Lines
@c @chapter Incomplete Lines
@chapter 不完全な行
@cindex incomplete lines
@cindex full lines
@cindex newline treatment by @command{diff}

@c When an input file ends in a non-newline character, its last line is
@c called an @dfn{incomplete line} because its last character is not a
@c newline.  All other lines are called @dfn{full lines} and end in a
@c newline character.  Incomplete lines do not match full lines unless
@c differences in white space are ignored (@pxref{White Space}).
@c 
入力ファイルが改行ではない文字で終るとき，最後の文字が改行ではないので，
その最後の行は@dfn{不完全な行(incomplete line)}と呼ばれます．それ以外の
すべての行は@dfn{完全な行(full lines)}と呼ばれ，改行文字で終ります．空白
(@pxref{White Space})の差異が無視されない限り，不完全な行は完全な行にマッ
チしません．

@c An incomplete line is normally distinguished on output from a full line
@c by a following line that starts with @samp{\}.  However, the @sc{rcs} format
@c (@pxref{RCS}) outputs the incomplete line as-is, without any trailing
@c newline or following line.  The side by side format normally represents
@c incomplete lines as-is, but in some cases uses a @samp{\} or @samp{/}
@c gutter marker; @xref{Side by Side}.  The if-then-else line format
@c preserves a line's incompleteness with @samp{%L}, and discards the
@c newline with @samp{%l}; @xref{Line Formats}.  Finally, with the
@c @command{ed} and forward @command{ed} output formats (@pxref{Output Formats})
@c @command{diff} cannot represent an incomplete line, so it pretends there
@c was a newline and reports an error.
@c 
不完全な行は，@samp{\}で開始される行が続く完全な行の出力とは，通常区別さ
れます．しかし，@sc{rcs}書式(@pxref{RCS})では，改行もそれに続く行も用い
ず，不完全な行をそのまま出力します．並べた書式では，不完全な行を通常その
まま表示しますが，場合によっては，段の印として@samp{\}や@samp{/}を使用し
ます．if-then-elseの行の書式は，不完全な行を@samp{%L}で保持し，@samp{%l} 
で改行を破棄します．@xref{Line Formats}.  最後に，@command{ed}と前置
@command{ed}出力書式では(@pxref{Output Formats})，@command{diff}は不完全
な行を表示することが不可能なので，改行があることを要求し，エラーを報告し
ます．

@c For example, suppose @file{F} and @file{G} are one-byte files that
@c contain just @samp{f} and @samp{g}, respectively.  Then @samp{diff F G}
@c outputs
@c 
例えば，@file{F}と@file{G}が１バイトのファイルで，それぞれ@samp{f}と
@samp{g}を含んでいると仮定します．そして，@samp{diff F G}は以下を出力し
ます．


@example
1c1
< f
\ No newline at end of file
---
> g
\ No newline at end of file
@end example

@noindent
@c (The exact message may differ in non-English locales.)
@c @samp{diff -n F G} outputs the following without a trailing newline:
@c 
(正確なメッセージは英語以外のロケールとは異なるでしょう．)@samp{diff -n
F G}は，改行を後置すること無く以下を出力します．

@example
d1 1
a1 1
g
@end example

@noindent
@c @samp{diff -e F G} reports two errors and outputs the following:
@c 
@samp{diff -e F G}では，二つのエラーを報告し，以下を出力します．

@example
1c
g
.
@end example

@node Comparing Directories
@c @chapter Comparing Directories
@chapter ディレクトリの比較

@vindex LC_COLLATE
@c You can use @command{diff} to compare some or all of the files in two
@c directory trees.  When both file name arguments to @command{diff} are
@c directories, it compares each file that is contained in both
@c directories, examining file names in alphabetical order as specified by
@c the @env{LC_COLLATE} locale category.  Normally
@c @command{diff} is silent about pairs of files that contain no differences,
@c but if you use the @option{-s} or @option{--report-identical-files} option,
@c it reports pairs of identical files.  Normally @command{diff} reports
@c subdirectories common to both directories without comparing
@c subdirectories' files, but if you use the @option{-r} or
@c @option{--recursive} option, it compares every corresponding pair of files
@c in the directory trees, as many levels deep as they go.
@c 
二つのディレクトリツリーでファイルのいくつかまたはすべてを比較するために，
@command{diff}を使用することが可能です．@command{diff}への引数が両方とも
ディレクトリのとき，両方のディレクトリに含まれているそれぞれのファイルを，
@env{LC_COLLATE}ロケールカテゴリで指定されているように，アルファベット順
に比較します．通常@command{diff}は，差異の無いファイルの組に対しては何も
出力しませんが，@option{-s}や@option{--report-identical-files}オプション
を使用している場合，同一ファイルの組も報告します．通常@command{diff}は，
サブディレクトリの比較を行なわず，両方のディレクトリに共通のサブディレク
トリについて報告しますが，@option{-r}や@option{--recursive}オプションを
使用している場合，可能な限り深いレベルまで，ディレクトリツリーの対応する
ファイルの組ごとに比較をします．

@c For file names that are in only one of the directories, @command{diff}
@c normally does not show the contents of the file that exists; it reports
@c only that the file exists in that directory and not in the other.  You
@c can make @command{diff} act as though the file existed but was empty in the
@c other directory, so that it outputs the entire contents of the file that
@c actually exists.  (It is output as either an insertion or a
@c deletion, depending on whether it is in the first or the second
@c directory given.)  To do this, use the @option{-N} or @option{--new-file}
@c option.
@c 
一方 のディレクトリだけにあるファイル名に対して，@command{diff}は通常，
存在するファイルの内容を表示しません．ファイルがディレクトリに存在し，も
う一方には存在しないことだけを報告します．実際に存在するファイルの内容全
部を出力するように，もう一方のディレクトリにファイルは存在するが空のファ
イルであるかのように，@command{diff}に動作させることも可能です．(該当す
るものが最初または二番目のディレクトリにあるかどうかに依存して，挿入また
は削除として出力します．)こうするために，@option{-N}や
@option{--new-file}オプションを使用してください．

@c If the older directory contains one or more large files that are not in
@c the newer directory, you can make the patch smaller by using the
@c @option{--unidirectional-new-file} option instead of @option{-N}.
@c This option is like @option{-N} except that it only inserts the contents
@c of files that appear in the second directory but not the first (that is,
@c files that were added).  At the top of the patch, write instructions for
@c the user applying the patch to remove the files that were deleted before
@c applying the patch.  @xref{Making Patches}, for more discussion of
@c making patches for distribution.
@c 
古いディレクトリに一つ以上の大きなファイルがあり，新しいディレクトリには
無い場合，@option{-N}の代わりに@option{--unidirectional-new-file}を使用
することで，パッチをより小さくすることが可能です．このオプションは
@option{-N}に似ていますが，最初のディレクトリには無く二番目ディレクトリ
にあるファイル(すなわち，追加されたファイル)の内容だけを挿入します．パッ
チの最初に，ユーザが適用するパッチで，パッチを適用する前に削除されたファ
イルを削除するように命令を書いてください．配布物へのパッチを作成する議論
は，@xref{Making Patches}.

@c To ignore some files while comparing directories, use the @option{-x
@c @var{pattern}} or @option{--exclude=@var{pattern}} option.  This option
@c ignores any files or subdirectories whose base names match the shell
@c pattern @var{pattern}.  Unlike in the shell, a period at the start of
@c the base of a file name matches a wildcard at the start of a pattern.
@c You should enclose @var{pattern} in quotes so that the shell does not
@c expand it.  For example, the option @option{-x '*.[ao]'} ignores any file
@c whose name ends with @samp{.a} or @samp{.o}.
@c 
ディレクトリを比較している間にいくつかのファイルを無視するために，
@option{-x @var{pattern}}や@option{--exclude=@var{pattern}}オプションを
使用してください．このオプションで，シェルのパターン@var{pattern}にマッ
チするベース名のファイルやサブディレクトリを無視します．シェルとは異なり，
ファイル名のベースの最初のピリオドはパターンの最初のワイルドカードにマッ
チします．シェルが展開しないように，@var{pattern}を引用符で囲むべきです．
例えば，オプション@option{-x '*.[ao]'}で，@samp{.a}や@samp{.o}で終る名前
のファイルを無視します．

@c This option accumulates if you specify it more than once.  For example,
@c using the options @option{-x 'RCS' -x '*,v'} ignores any file or
@c subdirectory whose base name is @samp{RCS} or ends with @samp{,v}.
@c 
このオプションは一回以上指定した場合は累積されます．例えば，オプション
@option{-x 'RCS' -x '*,v'}を使用することで，ベース名が@samp{RCS}または
@samp{,v}で終るファイルやディレクトリを無視します．

@c If you need to give this option many times, you can instead put the
@c patterns in a file, one pattern per line, and use the @option{-X
@c @var{file}} or @option{--exclude-from=@var{file}} option.
@c 
このオプションを何回も与える必要がある場合，その代わりにパターンをファイ
ルに書き，@option{-X @var{file}}や@option{--exclude-from=@var{file}}オプ
ションを使用することが可能です．

@c If you have been comparing two directories and stopped partway through,
@c later you might want to continue where you left off.  You can do this by
@c using the @option{-S @var{file}} or @option{--starting-file=@var{file}}
@c option.  This compares only the file @var{file} and all alphabetically
@c later files in the topmost directory level.
@c 
二つのディレクトリを比較していて途中で停止した場合，その後で残りを続けた
いこともあるでしょう．@option{-S @var{file}}や
@option{--starting-file=@var{file}}オプションを使用することで，それが可
能です．これで，最上位レベルのディレクトリで，ファイル@var{file}とアルファ
ベット順でそれ以降のファイルだけを比較します．

@c If two directories differ only in that file names are lower case in
@c one directory and upper case in the upper, @command{diff} normally
@c reports many differences because it compares file names in a
@c case sensitive way.  With the @option{--ignore-file-name-case} option,
@c @command{diff} ignores case differences in file names, so that for example
@c the contents of the file @file{Tao} in one directory are compared to
@c the contents of the file @file{TAO} in the other.  The
@c @option{--no-ignore-file-name-case} option cancels the effect of the
@c @option{--ignore-file-name-case} option, reverting to the default
@c behavior.
@c 
二つのディレクトリで，ファイル名が一方のディレクトリでは小文字で，もう一
方では大文字になっているという差しかない場合，@command{diff}は通常，大文
字小文字を区別してファイル名を比較するので，多くの差異を報告します．
@option{--ignore-file-name-case}オプションを用いると，例えば一方のディレ
クトリのファイル@file{Tao}の内容と，もう一方のファイル@file{TAO}の内容を
比較するように，@command{diff}はファイル名の大文字小文字を無視します．
@option{--no-ignore-file-name-case}オプションで，
@option{--ignore-file-name-case}オプションの効果を停止し，デフォルトの動
作に戻ります．

@c If an @option{-x @var{pattern}}, @option{--exclude=@var{pattern}},
@c @option{-X @var{file}}, or @option{--exclude-from=@var{file}} option
@c is specified while the @option{--ignore-file-name-case} option is in
@c effect, case is ignored when excluding file names matching the
@c specified patterns.
@c 
@option{--ignore-file-name-case}が効果があるときに，@option{-x
@var{pattern}}，@option{--exclude=@var{pattern}}，@option{-X @var{file}}，
または@option{--exclude-from=@var{file}}オプションが指定されている場合，
指定されているパターンにマッチしたファイル名を除外するとき，大文字小文字
を無視します．

@node Adjusting Output
@c @chapter Making @command{diff} Output Prettier
@chapter @command{diff}の出力をより良くする

@c @command{diff} provides several ways to adjust the appearance of its output.
@c These adjustments can be applied to any output format.
@c 
@command{diff}は，出力の見え方を調整する方法をいくつかの提供しています．
これらの調整は，あらゆる出力書式に適用することが可能です．

@menu
* Tabs::       Preserving the alignment of tab stops.
* Pagination:: Page numbering and time-stamping @command{diff} output.
@end menu

@node Tabs
@c @section Preserving Tab Stop Alignment
@section タブストップの位置合わせを保持する
@cindex tab stop alignment
@cindex aligning tab stops

@c The lines of text in some of the @command{diff} output formats are preceded
@c by one or two characters that indicate whether the text is inserted,
@c deleted, or changed.  The addition of those characters can cause tabs to
@c move to the next tab stop, throwing off the alignment of columns in the
@c line.  @sc{gnu} @command{diff} provides two ways to make tab-aligned columns
@c line up correctly.
@c 
いくつかの@command{diff}出力書式のテキストには,テキストが挿入されている，
削除されている，または変更されていることを示す一文字または二文字が前置さ
れます．これらの文字を追加することで，タブが次のタブストップに移動し，行
での列の位置揃えがなくなります．@sc{gnu} @command{diff}は，行でのタブに
よる列の位置揃えを正しくする二つの方法を提供しています．

@c The first way is to have @command{diff} convert all tabs into the correct
@c number of spaces before outputting them; select this method with the
@c @option{-t} or @option{--expand-tabs} option.  @command{diff} assumes that
@c tab stops are set every 8 print columns.  To use this form of output with
@c @command{patch}, you must give @command{patch} the @option{-l} or
@c @option{--ignore-white-space} option (@pxref{Changed White Space}, for more
@c information).
@c 
最初の方法は，@command{diff}で出力する前に，すべてのタブを正しい数のスペー
スに変更することです．この手法は@option{-t}や@option{--expand-tabs}オプ
ションで選択してください．@command{diff}はタブストップを8列ごとに設定さ
れていると仮定します．この形式の出力を@command{patch}で使用するとき，
@command{patch}に@option{-l}や@option{--ignore-white-space}オプションを
与える必要があります(詳細は，@pxref{Changed White Space})．

@c The other method for making tabs line up correctly is to add a tab
@c character instead of a space after the indicator character at the
@c beginning of the line.  This ensures that all following tab characters
@c are in the same position relative to tab stops that they were in the
@c original files, so that the output is aligned correctly.  Its
@c disadvantage is that it can make long lines too long to fit on one line
@c of the screen or the paper.  It also does not work with the unified
@c output format, which does not have a space character after the change
@c type indicator character.  Select this method with the @option{-T} or
@c @option{--initial-tab} option.
@c 
タブの行の揃えを正しくするもう一つの方法は，スペースの代わりにタブを，行
の最初の指示文字の後に追加する方法です．これで，それ以下のすべてのタブ文
字が元のファイルでのタブストップに対応して，出力の位置会わせが正しくなる
ように，同じ場所に確実に位置します．その欠点は，行が余りに長くなり過ぎて，
画面や用紙の一行に適さないようになることです．また，一体化した出力書式で
は変更形式を示す文字の後にスペースがないので，これでも動作しません．この
手法は，@option{-T}や@option{--initial-tab}オプションで選択してください．

@node Pagination
@c @section Paginating @command{diff} Output
@section @command{diff}出力のページ分割
@cindex paginating @command{diff} output

@c It can be convenient to have long output page-numbered and time-stamped.
@c The @option{-l} and @option{--paginate} options do this by sending the
@c @command{diff} output through the @command{pr} program.  Here is what the page
@c header might look like for @samp{diff -lc lao tzu}:
@c 
長い出力にページ番号を付けたり，タイムスタンプを付けることも便利でしょう．
@command{diff}の出力を@command{pr}プログラムに渡す，@option{-l}と
@option{--paginate}オプションでこうなります．以下は，@samp{diff -lc lao
tzu}に対するヘッダのようなものです．

@example
2002-02-22 14:20                 diff -lc lao tzu                 Page 1
@end example

@node diff Performance
@c @chapter @command{diff} Performance Tradeoffs
@chapter @command{diff}の性能のトレードオフ
@cindex performance of @command{diff}

@c @sc{gnu} @command{diff} runs quite efficiently; however, in some circumstances
@c you can cause it to run faster or produce a more compact set of changes.
@c 
@sc{gnu} @command{diff}は効率的に動作します．しかし，状況によってはより
速く，より小さな変更の組を生成させることが可能です．

@c One way to improve @command{diff} performance is to use hard or
@c symbolic links to files instead of copies.  This improves performance
@c because @command{diff} normally does not need to read two hard or
@c symbolic links to the same file, since their contents must be
@c identical.  For example, suppose you copy a large directory hierarchy,
@c make a few changes to the copy, and then often use @samp{diff -r} to
@c compare the original to the copy.  If the original files are
@c read-only, you can greatly improve performance by creating the copy
@c using hard or symbolic links (e.g., with @sc{gnu} @samp{cp -lR} or
@c @samp{cp -sR}).  Before editing a file in the copy for the first time,
@c you should break the link and replace it with a regular copy.
@c 
@command{diff}の効率を改善する方法の一つは，コピーの代わりにハードリンク
やシンボリックリンクを使用することです．@command{diff}は通常，同じファイ
ルへの二つのハードリンクやシンボリックリンクは内容が同じはずなので読み込
む必要がないため，これで効率が改善します．例えば，大きなディレクトリ階層
をコピーして，コピーに対しいくつか変更して，そしてオリジナルとコピーを比
較するのに@samp{diff -r}を使用することが多いと仮定します．オリジナルのファ
イルが読み込み専用の場合，ハードリンクやシンボリックリンクを使用してコピー
を作成する(例えば，@sc{gnu} @samp{cp -lR}や@samp{cp -sR}を用いる)ことで，
効率をかなり改善することが可能です．コピーのファイルを最初に編集する前に，
リンクを切って，通常のコピーで置換すべきです．

@c You can also affect the performance of @sc{gnu} @command{diff} by
@c giving it options that change the way it compares files.
@c Performance has more than one dimension.  These options improve one
@c aspect of performance at the cost of another, or they improve
@c performance in some cases while hurting it in others.
@c 
ファイル比較の方法を変更するオプションを与えることで，@sc{gnu}
@command{diff}の効率に影響を与えることも可能です．これらのオプションは，
他のものを犠牲にして効率改善の見地で実装されていたり，他のものに害を与え
ながら，場合によっては効率を改善したりします．

@c The way that @sc{gnu} @command{diff} determines which lines have changed always
@c comes up with a near-minimal set of differences.  Usually it is good
@c enough for practical purposes.  If the @command{diff} output is large, you
@c might want @command{diff} to use a modified algorithm that sometimes
@c produces a smaller set of differences.  The @option{-d} or
@c @option{--minimal} option does this; however, it can also cause
@c @command{diff} to run more slowly than usual, so it is not the default
@c behavior.
@c 
@sc{gnu} @command{diff}が変更された行を決定する方法は，常に最小限の差異
の集合で見つけ出します．通常それは，実用的な目的としては十分です．
@command{diff}の出力が大きい場合，より小さな差異の集合を生成するために，
@command{diff}を修正されたアルゴリズムで使用したいかもしれません．
@option{-d}や@option{--minimal}でこうなります．しかし，通常は
@command{diff}の実行が遅くなるので，デフォルトの動作ではありません．

@c When the files you are comparing are large and have small groups of
@c changes scattered throughout them, you can use the
@c @option{--speed-large-files} option to make a different modification to
@c the algorithm that @command{diff} uses.  If the input files have a constant
@c small density of changes, this option speeds up the comparisons without
@c changing the output.  If not, @command{diff} might produce a larger set of
@c differences; however, the output will still be correct.
@c 
比較しているファイルが大きく，全体を通じて変更部分の小さな集合が点在して
いるとき，@command{diff}が使用するアルゴリズムとは異なる変更を行なう，
@option{--speed-large-files}を使用することも可能です．入力ファイルが一定
して小さな密度で変更されているとき，このオプションで出力を変更することな
く比較の速度が向上します．そうでない場合，@command{diff}は大きな差異の組
を生成するかもしれません．しかし，出力は正しいままです．

@c Normally @command{diff} discards the prefix and suffix that is common to
@c both files before it attempts to find a minimal set of differences.
@c This makes @command{diff} run faster, but occasionally it may produce
@c non-minimal output.  The @option{--horizon-lines=@var{lines}} option
@c prevents @command{diff} from discarding the last @var{lines} lines of the
@c prefix and the first @var{lines} lines of the suffix.  This gives
@c @command{diff} further opportunities to find a minimal output.
@c 
通常@command{diff}は，差異部分の最小組を見つけようとする前に，両方のファ
イルに共通な最初の部分と終りの部分を破棄します．これで@command{diff}の実
行は速くなりますが，最小の出力ではなくなることもあるでしょう．
@option{--horizon-lines=@var{lines}}オプションは，@command{diff}が最初の
部分の最後の@var{lines}行と終りの部分の最初の@var{lines}行を破棄すること
を妨げます．これで，@command{diff}はより最小の出力を見つけることになるで
しょう．

@c Suppose a run of changed lines includes a sequence of lines at one end
@c and there is an identical sequence of lines just outside the other end.
@c The @command{diff} command is free to choose which identical sequence is
@c included in the hunk.  In this case, @command{diff} normally shifts the
@c hunk's boundaries when this merges adjacent hunks, or shifts a hunk's
@c lines towards the end of the file.  Merging hunks can make the output
@c look nicer in some cases.
@c 
変更された行に連続する行が含まれていて，それ以外では同一行が連続している
と仮定してください．@command{diff}コマンドは，hunkに含まれてる連続した同
じ部分を自由に選択します．この場合，@command{diff}は通常，隣接するhunkを
マージするときはhunkの境界の位置を変更したり，hunkの行をファイルの終りま
で位置を変更したりします．hunkのマージは出力行の見栄えを良くすることもあ
るはずです．

@node Comparing Three Files
@c @chapter Comparing Three Files
@chapter 三つのファイルの比較
@cindex comparing three files
@cindex format of @command{diff3} output

@c Use the program @command{diff3} to compare three files and show any
@c differences among them.  (@command{diff3} can also merge files; see
@c @ref{diff3 Merging}).
@c 
三つのファイルを比較し，それらの間の差異を表示するため，プログラム
@command{diff3}を使用してください(@command{diff3}でファイルのマージも可
能です．@pxref{diff3 Merging})．

@c The ``normal'' @command{diff3} output format shows each hunk of
@c differences without surrounding context.  Hunks are labeled depending
@c on whether they are two-way or three-way, and lines are annotated by
@c their location in the input files.
@c 
``通常の''@command{diff3}の出力書式は，周りの文を用いずに，それぞれの差
異部分のhunkを表示します．hunkには，それが二方向か三方向かに依存してラベ
ルが付けられてて，行には，入力ファイルの位置で注釈がつきます．

@c @xref{Invoking diff3}, for more information on how to run @command{diff3}.
@c 
@command{diff3}の実行方法の詳細は，@xref{Invoking diff3}.

@menu
* Sample diff3 Input::    Sample @command{diff3} input for examples.
* Detailed diff3 Normal:: A detailed description of normal output format.
* diff3 Hunks::           The format of normal output format.
* Example diff3 Normal::  Sample output in the normal format.
@end menu

@node Sample diff3 Input
@c @section A Third Sample Input File
@section 三番目の入力ファイルの見本
@cindex @command{diff3} sample input
@cindex sample input for @command{diff3}

@c Here is a third sample file that will be used in examples to illustrate
@c the output of @command{diff3} and how various options can change it.  The
@c first two files are the same that we used for @command{diff} (@pxref{Sample
@c diff Input}).  This is the third sample file, called @file{tao}:
@c 
@command{diff3}の出力とオプションでそれを変更する様子を示す例で使用する
三番目のサンプルファイルは，以下のようになります．最初の二つのファイルは，
@command{diff}で使用したものと同じです(@pxref{Sample diff Input})．以下
は，@file{tao}という三番目のサンプルファイルです．

@example
The Way that can be told of is not the eternal Way;
The name that can be named is not the eternal name.
The Nameless is the origin of Heaven and Earth;
The named is the mother of all things.

Therefore let there always be non-being,
  so we may see their subtlety,
And let there always be being,
  so we may see their result.
The two are the same,
But after they are produced,
  they have different names.

  -- The Way of Lao-Tzu, tr. Wing-tsit Chan
@end example

@node Detailed diff3 Normal
@c @section Detailed Description of @command{diff3} Normal Format
@section @command{diff3}の通常の書式の詳細な説明

@c Each hunk begins with a line marked @samp{====}.  Three-way hunks have
@c plain @samp{====} lines, and two-way hunks have @samp{1}, @samp{2}, or
@c @samp{3} appended to specify which of the three input files differ in
@c that hunk.  The hunks contain copies of two or three sets of input
@c lines each preceded by one or two commands identifying where the lines
@c came from.
@c 
それぞれのhunkは@samp{====}で印がついた行で始まります．三方向のhunkには，
@samp{====}行があり，二方向のhunkには，そのhunkに差異のある三つの入力ファ
イルのいずれかを示す，@samp{1}，@samp{2}，または@samp{3}が後置されます．
hunkには，入力行がどこからのものかを示す一つまたは二つのコマンドが前置さ
れている，入力行の二つまたは三つの組のコピーが含まれます．

@c Normally, two spaces precede each copy of an input line to distinguish
@c it from the commands.  But with the @option{-T} or @option{--initial-tab}
@c option, @command{diff3} uses a tab instead of two spaces; this lines up
@c tabs correctly.  @xref{Tabs}, for more information.
@c 
通常，コマンドごとに異なる入力号のコピーに二つのスペースが前置されます．
しかし，@option{-T}や@option{--initial-tab}オプションを用いると，
@command{diff3}は二つのスペースの代わりにタブを使用します．これでタブの
行揃えは正しくなります．詳細は，@xref{Tabs}.

@c Commands take the following forms:
@c 
コマンドは以下の形式となります．

@table @samp
@item @var{file}:@var{l}a
@c This hunk appears after line @var{l} of file @var{file}, and
@c contains no lines in that file.  To edit this file to yield the other
@c files, one must append hunk lines taken from the other files.  For
@c example, @samp{1:11a} means that the hunk follows line 11 in the first
@c file and contains no lines from that file.
@c 
このhunkは，ファイル@var{file}の行@var{l}以降にあり，そのファイルに含ま
れていない行です．もう一方のファイルを生成するべくこのファイルを編集する
ため，もう一方のファイルから得られるhunk行を後置する必要があります．例え
ば，@samp{1:11a}は最初のファイルの11行以降のhunkで，そのファイルにその行
が含まれていないことを意味します．

@item @var{file}:@var{r}c
@c This hunk contains the lines in the range @var{r} of file @var{file}.
@c The range @var{r} is a comma-separated pair of line numbers, or just one
@c number if the range is a singleton.  To edit this file to yield the
@c other files, one must change the specified lines to be the lines taken
@c from the other files.  For example, @samp{2:11,13c} means that the hunk
@c contains lines 11 through 13 from the second file.
@c 
このhunkは，ファイル@var{file}の範囲@var{r}の行を含みます．範囲@var{r}は
カンマで分離されている行番号の組，または範囲が単一行の場合，一つの数字だ
けになります．もう一方のファイルを生成するべくこのファイルを編集するため，
指定された行を，もう一方のファイルから得られる行に変更する必要があります．
例えば，@samp{2:11,13c}は，hunkが二番目のファイルの11行から13行に含まれ
ていることを意味します．
@end table

@c If the last line in a set of input lines is incomplete
@c (@pxref{Incomplete Lines}), it is distinguished on output from a full
@c line by a following line that starts with @samp{\}.
@c 
入力行の組の最後の行が不完全な場合(@pxref{Incomplete Lines})，出力とは区
別される@samp{\}で始まる行が後置された完全な行になります．

@node diff3 Hunks
@c @section @command{diff3} Hunks
@section @command{diff3}のhunk
@cindex hunks for @command{diff3}
@cindex @command{diff3} hunks

@c Groups of lines that differ in two or three of the input files are
@c called @dfn{diff3 hunks}, by analogy with @command{diff} hunks
@c (@pxref{Hunks}).  If all three input files differ in a @command{diff3}
@c hunk, the hunk is called a @dfn{three-way hunk}; if just two input files
@c differ, it is a @dfn{two-way hunk}.
@c 
二つまたは三つの入力ファイルの差分の行のグループは，@dfn{diff3 hunks}と
呼ばれ，@command{diff}のhunkに似ています(@pxref{Hunks})．@command{diff3} 
のhunkで三つの入力ファイルがすべて異なる場合，hunkは@dfn{三方向の
hunk(three-way hunk)}と呼ばれます．二つの入力ファイルだけが異なる場合，
それは@dfn{二方向のhunk(two-way hunk)}．

@c As with @command{diff}, several solutions are possible.  When comparing the
@c files @samp{A}, @samp{B}, and @samp{C}, @command{diff3} normally finds
@c @command{diff3} hunks by merging the two-way hunks output by the two
@c commands @samp{diff A B} and @samp{diff A C}.  This does not necessarily
@c minimize the size of the output, but exceptions should be rare.
@c 
@command{diff}と同様に，いくつかの解が考えられます．ファイル@samp{A}，
@samp{B}，そして@samp{C}を比較するとき， @command{diff3}は通常，二つのコ
マンド@samp{diff A B}と@samp{diff A C}で出力される二方向のhunkをマージし
て，@command{diff3}のhunkを見つけます．これでは，必ずしも出力が最小にな
るわけではありませんが，例外は滅多にないでしょう．

@c For example, suppose @file{F} contains the three lines @samp{a},
@c @samp{b}, @samp{f}, @file{G} contains the lines @samp{g}, @samp{b},
@c @samp{g}, and @file{H} contains the lines @samp{a}, @samp{b},
@c @samp{h}.  @samp{diff3 F G H} might output the following:
@c 
例えば，@file{F}には三行@samp{a}，@samp{b}，@samp{f}が含まれていて，
@file{G}に@samp{g}，@samp{b}，@samp{g}という行が含まれていて，そして
@file{H}に@samp{a}，@samp{b}，@samp{h}という行が含まれていると仮定します．
@samp{diff3 F G H}の出力は以下のようになるでしょう．

@example
====2
1:1c
3:1c
  a
2:1c
  g
====
1:3c
  f
2:3c
  g
3:3c
  h
@end example

@noindent
@c because it found a two-way hunk containing @samp{a} in the first and
@c third files and @samp{g} in the second file, then the single line
@c @samp{b} common to all three files, then a three-way hunk containing
@c the last line of each file.
@c 
その理由は，最初のファイルと三番目のファイルの@samp{a}が含まれる二方向の
hunkと二番目のファイルの@samp{g}を見つけ，単一行の@samp{b}が三つのファイ
ルすべての共通行として見つかり，それぞれのファイルの最後の行に含まれる三
方向のhunkが見つかるためです．

@node Example diff3 Normal
@c @section An Example of @command{diff3} Normal Format
@section @command{diff3}の通常の書式の例

@c Here is the output of the command @samp{diff3 lao tzu tao}
@c (@pxref{Sample diff3 Input}, for the complete contents of the files).
@c Notice that it shows only the lines that are different among the three
@c files.
@c 
コマンド@samp{diff3 lao tzu tao}の出力は以下のようになります(ファイルの
完全な内容は@pxref{Sample diff3 Input})．三つのファイル間で差異のある行
だけが表示されていることに注意してください．

@example
====2
1:1,2c
3:1,2c
  The Way that can be told of is not the eternal Way;
  The name that can be named is not the eternal name.
2:0a
====1
1:4c
  The Named is the mother of all things.
2:2,3c
3:4,5c
  The named is the mother of all things.
  
====3
1:8c
2:7c
    so we may see their outcome.
3:9c
    so we may see their result.
====
1:11a
2:11,13c
  They both may be called deep and profound.
  Deeper and more profound,
  The door of all subtleties!
3:13,14c
  
    -- The Way of Lao-Tzu, tr. Wing-tsit Chan
@end example

@node diff3 Merging
@c @chapter Merging From a Common Ancestor
@chapter 共通の先祖からマージ
@cindex merging from a common ancestor

@c When two people have made changes to copies of the same file,
@c @command{diff3} can produce a merged output that contains both sets of
@c changes together with warnings about conflicts.
@c 
二人の人が同じファイルのコピーへの変更を行なったとき，衝突している部分の
警告を用いて，お互いの変更の両方を含んでいるマージされた出力を
@command{diff3}で生成することが可能です．

@c One might imagine programs with names like @command{diff4} and @command{diff5}
@c to compare more than three files simultaneously, but in practice the
@c need rarely arises.  You can use @command{diff3} to merge three or more
@c sets of changes to a file by merging two change sets at a time.
@c 
三つ以上のファイルを同時に比較するために，@command{diff4}と
@command{diff5}のような名前のプログラムを想像するかもしれませんが，実際
にそれが必要になることは滅多にありません．二つの変更の組を同時にマージす
ることで，三つ以上のファイルの変更の組をマージするために，
@command{diff3}を使用することが可能です．

@c @command{diff3} can incorporate changes from two modified versions into a
@c common preceding version.  This lets you merge the sets of changes
@c represented by the two newer files.  Specify the common ancestor version
@c as the second argument and the two newer versions as the first and third
@c arguments, like this:
@c 
@command{diff3}で，二つの修正されたバージョンから共通の以前のバージョン
に変更を取り込むことが可能です．これで，二つの新しいファイルに存在する変
更された組をマージします．二番目の引数として共通の以前のバージョンを指定
し，二つの新しいバージョンを最初と三番目の引数として以下のように指定して
ください．

@example
diff3 @var{mine} @var{older} @var{yours}
@end example

@noindent
@c You can remember the order of the arguments by noting that they are in
@c alphabetical order.
@c 
アルファベット順なので，引数の順番を覚えられるでしょう．

@cindex conflict
@cindex overlap
@c You can think of this as subtracting @var{older} from @var{yours} and
@c adding the result to @var{mine}, or as merging into @var{mine} the
@c changes that would turn @var{older} into @var{yours}.  This merging is
@c well-defined as long as @var{mine} and @var{older} match in the
@c neighborhood of each such change.  This fails to be true when all three
@c input files differ or when only @var{older} differs; we call this
@c a @dfn{conflict}.  When all three input files differ, we call the
@c conflict an @dfn{overlap}.
@c 
このことから，@var{yours}から@var{older}を取り除いてその結果を@var{mine} 
に追加したり，@var{older}から@var{yours}への変更を@var{mine}にマージして
いると考えられるでしょう．このマージは，それぞれの変更が近くにあり， 
@var{mine}と@var{older}でマッチする限りうまくいくでしょう．すべての三つ
の入力ファイルが異なっているときや，@var{older}だけが異なっているときは
うまくいかないでしょう．これを@dfn{衝突(conflict)}と呼んでいます．三つの
入力ファイルがすべて異なるとき，この衝突を@dfn{オーバーラップ(overlap)} 
と呼んでいます．

@c @command{diff3} gives you several ways to handle overlaps and conflicts.
@c You can omit overlaps or conflicts, or select only overlaps,
@c or mark conflicts with special @samp{<<<<<<<} and @samp{>>>>>>>} lines.
@c 
@command{diff3}は，オーバーラップや衝突を処理する方法も提供しています．
オーバーラップや衝突を削除したり，オーバーラップだけを選択したり，衝突を
特殊な@samp{<<<<<<<}と@samp{>>>>>>>}の行で印を付けたりすることが可能です．

@c @command{diff3} can output the merge results as an @command{ed} script that
@c that can be applied to the first file to yield the merged output.
@c However, it is usually better to have @command{diff3} generate the merged
@c output directly; this bypasses some problems with @command{ed}.
@c 
@command{diff3}で，マージした出力を作成するために最初のファイルに適用す
ることが可能な@command{ed}スクリプトとして，マージした結果を出力すること
も可能です．しかし，@command{diff3}でマージした出力を直接生成した方が良
いでしょう．これで@command{ed}の問題も回避します．


@menu
* Which Changes::            Selecting changes to incorporate.
* Marking Conflicts::        Marking conflicts.
* Bypassing ed::             Generating merged output directly.
* Merging Incomplete Lines:: How @command{diff3} merges incomplete lines.
* Saving the Changed File::  Emulating System V behavior.
@end menu

@node Which Changes
@c @section Selecting Which Changes to Incorporate
@section 組み込む変更を選択する
@cindex overlapping change, selection of
@cindex unmerged change

@c You can select all unmerged changes from @var{older} to @var{yours} for merging
@c into @var{mine} with the @option{-e} or @option{--ed} option.  You can
@c select only the nonoverlapping unmerged changes with @option{-3} or
@c @option{--easy-only}, and you can select only the overlapping changes with
@c @option{-x} or @option{--overlap-only}.
@c 
@var{mine}にマージするために，@option{-e}や@option{--ed}を用いて，
@var{older}から@var{yours}へのマージされていないすべての変更を選択するこ
とが可能です．@option{-3}や@option{--easy-only}を用いて，オーバーラップ
のないマージされていない変更だけを選択することが可能で，@option{-x}や
@option{--overlap-only}を用いて，オーバーラップされている変更だけを選択
することも可能です．

@c The @option{-e}, @option{-3} and @option{-x} options select only
@c @dfn{unmerged changes}, i.e.@: changes where @var{mine} and @var{yours}
@c differ; they ignore changes from @var{older} to @var{yours} where
@c @var{mine} and @var{yours} are identical, because they assume that such
@c changes have already been merged.  If this assumption is not a safe
@c one, you can use the @option{-A} or @option{--show-all} option
@c (@pxref{Marking Conflicts}).
@c 
@option{-e}，@option{-3}，そして@option{-x}オプションは，@dfn{マージされ
ていない変更(unmerged changes)}，例えば，@var{mine}と@var{yours}で変更が
異なるところだけを選択します．@var{mine}と@var{yours}が同じところでは，
変更部分は既にマージされていると仮定されるので，@var{older}から
@var{yours}への変更を無視します．この仮定が安全ではない場合，@option{-A} 
や@option{--show-all}オプションを使用することが可能です(@pxref{Marking
Conflicts})．

@c Here is the output of the command @command{diff3} with each of these three
@c options (@pxref{Sample diff3 Input}, for the complete contents of the files).
@c Notice that @option{-e} outputs the union of the disjoint sets of changes
@c output by @option{-3} and @option{-x}.
@c 
これら三つのオプションをそれぞれ用いたコマンド@command{diff3}の出力例は
以下のようになります(ファイルの完全な内容は，@pxref{Sample diff3 Input})．
@option{-e}の出力が@option{-3}と@option{-x}で出力される変更の組をバラし
て合体させたものになっていることに注意してください．

@c Output of @samp{diff3 -e lao tzu tao}:
@c 
@samp{diff3 -e lao tzu tao}の出力です．
@example
11a

  -- The Way of Lao-Tzu, tr. Wing-tsit Chan
.
8c
  so we may see their result.
.
@end example

@c Output of @samp{diff3 -3 lao tzu tao}:
@c 
@samp{diff3 -3 lao tzu tao}の出力です．
@example
8c
  so we may see their result.
.
@end example

@c Output of @samp{diff3 -x lao tzu tao}:
@c 
@samp{diff3 -x lao tzu tao}の出力です．
@example
11a

  -- The Way of Lao-Tzu, tr. Wing-tsit Chan
.
@end example

@node Marking Conflicts
@c @section Marking Conflicts
@section 衝突の印づけ
@cindex conflict marking
@cindex @samp{<<<<<<<} for marking conflicts

@c @command{diff3} can mark conflicts in the merged output by
@c bracketing them with special marker lines.  A conflict
@c that comes from two files @var{A} and @var{B} is marked as follows:
@c 
@command{diff3}で，衝突部分に特殊なマーカー行を用いてマージされた出力を
囲むことで，印を付けることが可能です．二つのファイル@var{A}と@var{B}から
の衝突は，以下のように印が付きます．

@example
<<<<<<< @var{A}
@r{lines from @var{A}}
=======
@r{lines from @var{B}}
>>>>>>> @var{B}
@end example

@c A conflict that comes from three files @var{A}, @var{B} and @var{C} is
@c marked as follows:
@c 
三つのファイル@var{A}，@var{B}そして@var{C}からの衝突は，以下のように印
が付きます．

@example
<<<<<<< @var{A}
@r{lines from @var{A}}
||||||| @var{B}
@r{lines from @var{B}}
=======
@r{lines from @var{C}}
>>>>>>> @var{C}
@end example

@c The @option{-A} or @option{--show-all} option acts like the @option{-e}
@c option, except that it brackets conflicts, and it outputs all changes
@c from @var{older} to @var{yours}, not just the unmerged changes.  Thus,
@c given the sample input files (@pxref{Sample diff3 Input}), @samp{diff3
@c -A lao tzu tao} puts brackets around the conflict where only @file{tzu}
@c differs:
@c 
@option{-A}や@option{--show-all}オプションは，@option{-e}オプションのよ
うな動作をしますが，衝突部分を大カッコで囲み，マージされていない変更だけ
でなく，@var{older}から@var{yours}へのすべての変更を出力します．このため，
サンプルの入力ファイル(@pxref{Sample diff3 Input})が与えられると，
@samp{diff3 -A lao tzu tao}は，@file{tzu}の差異部分の衝突の周りに大カッ
コを書きます．

@example
<<<<<<< tzu
=======
The Way that can be told of is not the eternal Way;
The name that can be named is not the eternal name.
>>>>>>> tao
@end example

@c And it outputs the three-way conflict as follows:
@c 
また，三方向の衝突は以下のように出力されます．

@example
<<<<<<< lao
||||||| tzu
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!
=======

  -- The Way of Lao-Tzu, tr. Wing-tsit Chan
>>>>>>> tao
@end example

@c The @option{-E} or @option{--show-overlap} option outputs less information
@c than the @option{-A} or @option{--show-all} option, because it outputs only
@c unmerged changes, and it never outputs the contents of the second
@c file.  Thus the @option{-E} option acts like the @option{-e} option,
@c except that it brackets the first and third files from three-way
@c overlapping changes.  Similarly, @option{-X} acts like @option{-x}, except
@c it brackets all its (necessarily overlapping) changes.  For example,
@c for the three-way overlapping change above, the @option{-E} and @option{-X}
@c options output the following:
@c 
@option{-E}や@option{--show-overlap}オプションは，@option{-A}や
@option{--show-all}オプションより情報が少なくなり，それはマージされてい
ない変更だけを出力し，二番目のファイルの内容を出力しないためです．そのた
め，@option{-E}オプションは@option{-e}オプションのように動作しますが，三
方向のオーバーラップした変更で，最初と三番目のファイルが大カッコで囲みま
す．同様に，@option{-X}は@option{-x}のように動作しますが，(オーバーラッ
プが必要な)変更のすべてを大カッコで囲みます．例えば，上記のような三方向
のオーバーラップしている変更に対し，@option{-E}と@option{-X}オプションは
以下を出力します．

@example
<<<<<<< lao
=======

  -- The Way of Lao-Tzu, tr. Wing-tsit Chan
>>>>>>> tao
@end example

@c If you are comparing files that have meaningless or uninformative names,
@c you can use the @option{-L @var{label}} or @option{--label=@var{label}}
@c option to show alternate names in the @samp{<<<<<<<}, @samp{|||||||}
@c and @samp{>>>>>>>} brackets.  This option can be given up to three
@c times, once for each input file.  Thus @samp{diff3 -A -L X -L Y -L Z A
@c B C} acts like @samp{diff3 -A A B C}, except that the output looks like
@c it came from files named @samp{X}, @samp{Y} and @samp{Z} rather than
@c from files named @samp{A}, @samp{B} and @samp{C}.
@c 
無意味で情報のない名前を持つファイルを比較している場合，@samp{<<<<<<<}，
@samp{|||||||}，そして@samp{>>>>>>>}の大カッコで別名を表示するために，
@option{-L @var{label}}や@option{--label=@var{label}}オプションを使用す
ることが可能です．このオプションで，それぞれの入力ファイルごとに，三回ま
で与えることが可能です．このため，@samp{diff3 -A -L X -L Y -L Z A B C}は
@samp{diff3 -A A B C}のように動作しますが，出力は，ファイル名@samp{A}，
@samp{B}，そして@samp{C}ではなく，ファイル名@samp{X}，@samp{Y}，そして
@samp{Z}からのようになります．

@node Bypassing ed
@c @section Generating the Merged Output Directly
@section マージされた出力を直接生成する
@cindex merged @command{diff3} format

@c With the @option{-m} or @option{--merge} option, @command{diff3} outputs the
@c merged file directly.  This is more efficient than using @command{ed} to
@c generate it, and works even with non-text files that @command{ed} would
@c reject.  If you specify @option{-m} without an @command{ed} script option,
@c @option{-A} (@option{--show-all}) is assumed.
@c 
@option{-m}や@option{--merge}オプションを用いると，@command{diff3}はマー
ジされたファイルを直接出力します．これは，それを生成するために
@command{ed}を使用するより効果的で，@command{ed}が除外するテキストではな
いファイルでも動作します．@command{ed}スクリプトオプションを使用せずに
@option{-m}を指定する場合，@option{-A} (@option{--show-all})が仮定されま
す．

@c For example, the command @samp{diff3 -m lao tzu tao}
@c (@pxref{Sample diff3 Input} for a copy of the input files) would output
@c the following:
@c 
例えば，コマンド@samp{diff3 -m lao tzu tao}は(入力ファイルのコピーは
@pxref{Sample diff3 Input})，以下の出力を生成します．

@example
<<<<<<< tzu
=======
The Way that can be told of is not the eternal Way;
The name that can be named is not the eternal name.
>>>>>>> tao
The Nameless is the origin of Heaven and Earth;
The Named is the mother of all things.
Therefore let there always be non-being,
  so we may see their subtlety,
And let there always be being,
  so we may see their result.
The two are the same,
But after they are produced,
  they have different names.
<<<<<<< lao
||||||| tzu
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!
=======

  -- The Way of Lao-Tzu, tr. Wing-tsit Chan
>>>>>>> tao
@end example

@node Merging Incomplete Lines
@c @section How @command{diff3} Merges Incomplete Lines
@section 不完全な行を@command{diff3}がマージする方法
@cindex incomplete line merging

@c With @option{-m}, incomplete lines (@pxref{Incomplete Lines}) are simply
@c copied to the output as they are found; if the merged output ends in an
@c conflict and one of the input files ends in an incomplete
@c line, succeeding @samp{|||||||}, @samp{=======} or @samp{>>>>>>>}
@c brackets appear somewhere other than the start of a line because
@c they are appended to the incomplete line.
@c 
@option{-m}を用いると，不完全な行(@pxref{Incomplete Lines})は見つかった
ものとして，単純に出力にコピーされます．出力の終りで衝突があり，入力ファ
イルの一つが不完全な行で終る場合，不完全な行が追加されるので，
@samp{|||||||}，@samp{=======}，または@samp{>>>>>>>}の大カッコは，行の最
初ではない場所に現れるでしょう．

@c Without @option{-m}, if an @command{ed} script option is specified and an
@c incomplete line is found, @command{diff3} generates a warning and acts as
@c if a newline had been present.
@c 
@option{-m}オプションを用いないと，@command{ed}スクリプトオプションが指
定されていて，不完全な行が見つかる場合，@command{diff3}は警告を生成し，
改行が存在しないかのように動作します．

@node Saving the Changed File
@c @section Saving the Changed File
@section 変更されたファイルの保存
@cindex System V @command{diff3} compatibility

@c Traditional Unix @command{diff3} generates an @command{ed} script without the
@c trailing @samp{w} and @samp{q} commands that save the changes.
@c System V @command{diff3} generates these extra commands.  @sc{gnu}
@c @command{diff3} normally behaves like traditional Unix
@c @command{diff3}, but with the @option{-i} option it behaves like
@c System V @command{diff3} and appends the @samp{w} and @samp{q}
@c commands.
@c 
伝統的なUnix @command{diff3}は，変更を保存するコマンド@samp{w}と@samp{q} 
を後置しない@command{ed}スクリプトを生成します．System V @command{diff3} 
は，これらの追加コマンドを生成します．@sc{gnu} @command{diff3}は通常，伝
統的なUnix @command{diff3}のように動作しますが，@option{-i}オプションを
用いると，System V @command{diff3}のように動作し，@samp{w}と@samp{q}コマ
ンドを後置します．

@c The @option{-i} option requires one of the @command{ed} script options
@c @option{-AeExX3}, and is incompatible with the merged output option
@c @option{-m}.
@c 
@option{-i}オプションは，@command{ed}スクリプトオプションの
@option{-AeExX3}の一つを要求し，マージされた出力のオプション@option{-m} 
と互換性がありません．

@node Interactive Merging
@c @chapter Interactive Merging with @command{sdiff}
@chapter @command{sdiff}を用いた対話的なマージ
@cindex diff merging
@cindex interactive merging

@c With @command{sdiff}, you can merge two files interactively based on a
@c side-by-side @option{-y} format comparison (@pxref{Side by Side}).  Use
@c @option{-o @var{file}} or @option{--output=@var{file}} to specify where to
@c put the merged text.  @xref{Invoking sdiff}, for more details on the
@c options to @command{sdiff}.
@c 
@command{sdiff}を用いると，横に並べた@option{-y}書式の比較を元にして
(@pxref{Side by Side})，二つのファイルを対話的にマージすることが可能です．
マージされたテキストを書く場所を指定するために，@option{-o @var{file}}や
@option{--output=@var{file}}を使用してください．@command{sdiff}のオプショ
ンの詳細は，@xref{Invoking sdiff}.

@c Another way to merge files interactively is to use the Emacs Lisp
@c package @command{emerge}.  @xref{emerge, , emerge, emacs, The @sc{gnu} Emacs
@c Manual}, for more information.
@c 
ファイルを対話的にマージするもう一つの方法は，Emacs Lispパッケージの
@command{emerge}を使用する方法です．詳細は，@xref{emerge, , emerge,
emacs, The @sc{gnu} Emacs Manual}.

@menu
* sdiff Option Summary:: Summary of @command{sdiff} options.
* Merge Commands::       Merging two files interactively.
@end menu

@node sdiff Option Summary
@c @section Specifying @command{diff} Options to @command{sdiff}
@section @command{sdiff}に@command{diff}のオプションを指定する
@cindex @command{sdiff} output format

@c The following @command{sdiff} options have the same meaning as for
@c @command{diff}.  @xref{diff Options}, for the use of these options.
@c 
以下の@command{sdiff}は，@command{diff}と同じ意味です．これらのオプショ
ンの使用については，@xref{diff Options}.

@example
-a -b -d -i -t -v
-B -E -I @var{regexp}

--ignore-blank-lines  --ignore-case
--ignore-matching-lines=@var{regexp}  --ignore-space-change
--ignore-tab-expansion
--left-column  --minimal  --speed-large-files
--strip-trailing-cr  --suppress-common-lines  --expand-tabs
--text  --version  --width=@var{columns}
@end example

@c For historical reasons, @command{sdiff} has alternate names for some
@c options.  The @option{-l} option is equivalent to the
@c @option{--left-column} option, and similarly @option{-s} is equivalent
@c to @option{--suppress-common-lines}.  The meaning of the @command{sdiff}
@c @option{-w} and @option{-W} options is interchanged from that of
@c @command{diff}: with @command{sdiff}, @option{-w @var{columns}} is
@c equivalent to @option{--width=@var{columns}}, and @option{-W} is
@c equivalent to @option{--ignore-all-space}.  @command{sdiff} without the
@c @option{-o} option is equivalent to @command{diff} with the @option{-y}
@c or @option{--side-by-side} option (@pxref{Side by Side}).
@c 
歴史的な理由から，@command{sdiff}は別名のあるオプションもあります．
@option{-l}は@option{--left-column}オプションと等価で，同様に，
@option{-s}は@option{--suppress-common-lines}と等価です．@command{sdiff} 
の@option{-w}と@option{-W}オプションの意味は，@command{diff}とは違います．
@command{sdiff}では，@option{-w @var{columns}}は
@option{--width=@var{columns}}と等価で，@option{-W}は
@option{--ignore-all-space}と等価です．@option{-o}オプションを用いない
@command{sdiff}は，@option{-y}や@option{--side-by-side}オプション
(@pxref{Side by Side})を用いた@command{diff}と等価です．

@node Merge Commands
@c @section Merge Commands
@section マージコマンド
@cindex merge commands
@cindex merging interactively

@c Groups of common lines, with a blank gutter, are copied from the first
@c file to the output.  After each group of differing lines, @command{sdiff}
@c prompts with @samp{%} and pauses, waiting for one of the following
@c commands.  Follow each command with @key{RET}.
@c 
空白の溝を用いている共通行のグループは，最初のファイルから出力へコピーさ
れます．差異のある行のそれぞれの行の後に，@command{sdiff}は@samp{%}のプ
ロンプトを出力して一時停止し，以下のコマンドの一つを待ち続けます．それぞ
れのコマンドに@key{RET}を続けてください．

@table @samp
@item e
@c Discard both versions.
@c Invoke a text editor on an empty temporary file,
@c then copy the resulting file to the output.
@c 
どちらのバージョンも破棄します．空の一時ファイルでテキストエディタを呼び
出し，編集結果のファイルを出力にコピーします．

@item eb
@c Concatenate the two versions, edit the result in a temporary file,
@c then copy the edited result to the output.
@c 
二つのバージョンを連結し，一時ファイルでその結果を編集し，そして，編集結
果を出力にコピーします．

@item ed
@c Like @samp{eb}, except precede each version with a header that
@c shows what file and lines the version came from.
@c 
@samp{eb}に似ていますが，それぞれのバージョンに，ファイルや行があるバー
ジョンを表示するヘッダが前置されます．

@item el
@c Edit a copy of the left version, then copy the result to the output.
@c 
左のバージョンのコピーを編集し，その結果を出力にコピーします．

@item er
@c Edit a copy of the right version, then copy the result to the output.
@c 
右のバージョンのコピーを編集し，その結果を出力にコピーします．

@item l
@c Copy the left version to the output.
@c 
左のバージョンを出力にコピーします．

@item q
@c Quit.
@c 
終了します．

@item r
@c Copy the right version to the output.
@c 
右のバージョンを出力にコピーします．

@item s
@c Silently copy common lines.
@c 
共通の行を黙ってコピーします．

@item v
@c Verbosely copy common lines.  This is the default.
@c 
冗長な出力を出しながら共通の行をコピーします．これはデフォルトです．
@end table

@vindex EDITOR
@c The text editor invoked is specified by the @env{EDITOR} environment
@c variable if it is set.  The default is system-dependent.
@c 
呼び出されるテキストエディターは，@env{EDITOR}環境変数が設定されていれば
それで指定されます．デフォルトはシステムに依存します．

@node Merging with patch
@c @chapter Merging with @command{patch}
@chapter @command{patch}を用いてマージする

@c @command{patch} takes comparison output produced by @command{diff} and applies
@c the differences to a copy of the original file, producing a patched
@c version.  With @command{patch}, you can distribute just the changes to a
@c set of files instead of distributing the entire file set; your
@c correspondents can apply @command{patch} to update their copy of the files
@c with your changes.  @command{patch} automatically determines the diff
@c format, skips any leading or trailing headers, and uses the headers to
@c determine which file to patch.  This lets your correspondents feed a
@c mail message containing a difference listing directly to
@c @command{patch}.
@c 
@command{patch}は，@command{diff}で生成される比較された出力を受けとり，
パッチをあてたバージョンを生成しながら，オリジナルファイルのコピーに差分
を適用します．@command{patch}を用いることで，ファイルをすべて配布する代
わりに，変更したファイルの組だけを配布することが可能になります．取引先で
は，変更したファイルのコピーを更新するために@command{patch}を適用するこ
とが可能になります．@command{patch}は差分の書式を自動的に決定し，前後の
ヘッダを飛ばし，パッチをあてるファイルを決定するためにヘッダを使用します．
これで，取引先は@command{patch}に直接，変更部分のリストをメールのメッセー
ジに含めることができます．

@c @command{patch} detects and warns about common problems like forward
@c patches.  It saves any patches that it could not apply.  It can also maintain a
@c @code{patchlevel.h} file to ensure that your correspondents apply
@c diffs in the proper order.
@c 
@command{patch}は，後戻りするパッチのような一般的な問題を検出し警告を発
します．それで適用しなくてもよいパッチあてることを止めます．また，取引先
が適切な順序で差分を適用するのを確実にするため，@code{patchlevel.h}ファ
イルも管理することが可能です．

@c @command{patch} accepts a series of diffs in its standard input, usually
@c separated by headers that specify which file to patch.  It applies
@c @command{diff} hunks (@pxref{Hunks}) one by one.  If a hunk does not
@c exactly match the original file, @command{patch} uses heuristics to try to
@c patch the file as well as it can.  If no approximate match can be found,
@c @command{patch} rejects the hunk and skips to the next hunk.  @command{patch}
@c normally replaces each file @var{f} with its new version, putting reject
@c hunks (if any) into @samp{@var{f}.rej}.
@c 
@command{patch}は，標準入力から連続した差分を受け入れ，それは通常，パッ
チをあてるファイルを指定するヘッダで分離されています．それは，
@command{diff}のhunk(@pxref{Hunks})を一つずつ適用します．hunkが元ファイ
ルに正確にマッチしない場合，@command{patch}はできる限り発見的手法を用い
てパッチをあてるファイルを見つけようとします．適切にマッチしている部分を
見つけることが不可能な場合，@command{patch}はhunkを除外し，次のhunkに飛
びます．@command{patch}は通常，hunk(が存在する場合はそれ)を
@samp{@var{f}.rej}に捨てながら，それぞれのファイル@var{f}を新しいバージョ
ンで置換します．

@c @xref{Invoking patch}, for detailed information on the options to
@c @command{patch}.
@c 
@command{patch}へのオプションの詳細は，@xref{Invoking patch}.

@menu
* patch Input::            Selecting the type of @command{patch} input.
* Revision Control::       Getting files from @sc{rcs}, @sc{sccs}, etc.
* Imperfect::              Dealing with imperfect patches.
* Creating and Removing::  Creating and removing files with a patch.
* Patching Time Stamps::   Updating time stamps on patched files.
* Multiple Patches::       Handling multiple patches in a file.
* patch Directories::      Changing directory and stripping directories.
* Backups::                Whether backup files are made.
* Backup Names::           Backup file names.
* Reject Names::           Reject file names.
* patch Messages::         Messages and questions @command{patch} can produce.
* patch and POSIX::        Conformance to the @sc{posix} standard.
* patch and Tradition::    @sc{gnu} versus traditional @command{patch}.
@end menu

@node patch Input
@c @section Selecting the @command{patch} Input Format
@section @command{patch}の入力書式の選択
@cindex @command{patch} input format

@c @command{patch} normally determines which @command{diff} format the patch
@c file uses by examining its contents.  For patch files that contain
@c particularly confusing leading text, you might need to use one of the
@c following options to force @command{patch} to interpret the patch file as a
@c certain format of diff.  The output formats listed here are the only
@c ones that @command{patch} can understand.
@c 
@command{patch}は，パッチファイルで使用している@command{diff}の書式を，
その内容を調査して決定します．特定の複雑な前置テキストの一つが含まれてい
るパッチファイルに対し，@command{patch}がパッチファイルを特定の書式の差
分であると解釈するように，以下のオプションの一つを使用する必要があるかも
しれません．以下でリストアップしている出力書式は，@command{patch}が理解
可能なものだけです．

@table @option
@item -c
@itemx --context
@c context diff.
@c 
周りの文を使用した差分．

@item -e
@itemx --ed
@c @command{ed} script.
@c 
@command{ed}スクリプト．

@item -n
@itemx --normal
@c normal diff.
@c 
通常の差分．

@item -u
@itemx --unified
@c unified diff.
@c 
一体化した差分．
@end table

@node Revision Control
@c @section Revision Control
@section リビジョンコントロール
@cindex revision control
@cindex version control
@cindex @sc{rcs}
@cindex ClearCase
@cindex @sc{sccs}

@c If a nonexistent input file is under a revision control system
@c supported by @command{patch}, @command{patch} normally asks the user
@c whether to get (or check out) the file from the revision control
@c system.  Patch currently supports @sc{rcs}, ClearCase and @sc{sccs}.
@c Under @sc{rcs} and @sc{sccs}, @command{patch} also asks when the input
@c file is read-only and matches the default version in the revision
@c control system.
@c 
存在しない入力ファイルが，@command{patch}でサポートされているリビジョン
コントロールシステムにある場合，@command{patch}は通常，ユーザにリビジョ
ンコントロールシステムからファイルを入手(チェックアウト)するかどうかを尋
ねます．パッチは現在，@sc{rcs}，ClearCase，そして@sc{sccs}をサポートして
います．@sc{rcs}と@sc{sccs}では，@command{patch}は入力ファイルが読み込み
専用で，デフォルトのバージョンがリビジョンコントロールシステムのものとマッ
チするときにも質問してきます．

@vindex PATCH_GET
@c The @option{-g @var{num}} or @option{--get=@var{num}} affects access
@c to files under supported revision control systems.  If @var{num} is
@c positive, @command{patch} gets the file without asking the user; if
@c zero, @command{patch} neither asks the user nor gets the file; and if
@c negative, @command{patch} asks the user before getting the file.  The
@c default value of @var{num} is given by the value of the
@c @env{PATCH_GET} environment variable if it is set; if not, the default
@c value is zero if @command{patch} is conforming to @sc{posix}, negative
@c otherwise.  @xref{patch and POSIX}.
@c 
@option{-g @var{num}}や@option{--get=@var{num}}は，サポートされているリ
ビジョンコントロールシステムのファイルへのアクセスに影響します．
@var{num}が正の場合，@command{patch}はユーザに尋ねることなくファイルを入
手します．ゼロの場合，@command{patch}はファイルを入手するかどうかをユー
ザに尋ねます．負の場合，@command{patch}はファイルを入手する前にユーザに
尋ねます．@var{num}のデフォルト値は，@env{PATCH_GET}環境変数が設定されて
いる場合，それで与えられます．存在しない場合，@command{patch}が
@sc{posix}に準拠している場合はデフォルト値はゼロで，そうでない場合は負に
なります．@xref{patch and POSIX}.

@vindex VERSION_CONTROL
@c The choice of revision control system is unaffected by the
@c @env{VERSION_CONTROL} environment variable (@pxref{Backup Names}).
@c 
リビジョンコントロールシステムの選択は，@env{VERSION_CONTROL}環境変数に
影響しません(@pxref{Backup Names})．

@node Imperfect
@c @section Applying Imperfect Patches
@section 不完全なパッチの適用
@cindex imperfect patch application

@c @command{patch} tries to skip any leading text in the patch file,
@c apply the diff, and then skip any trailing text.  Thus you can feed a
@c mail message directly to @command{patch}, and it should work.  If the
@c entire diff is indented by a constant amount of white space,
@c @command{patch} automatically ignores the indentation.  If a context
@c diff contains trailing carriage return on each line, @command{patch}
@c automatically ignores the carriage return.  If a context diff has been
@c encapsulated by prepending @w{@samp{- }} to lines beginning with @samp{-}
@c as per @uref{ftp://ftp.isi.edu/in-notes/rfc934.txt, Internet RFC 934},
@c @command{patch} automatically unencapsulates the input.
@c 
@command{patch}は，パッチファイルに前置されるテキストを読み飛ばし，差分
を適用し，そして後置されるテキストを読み飛ばそうとします．このため，メー
ルのメッセージを直接@command{patch}に与えることが可能で，それはうまく動
作するでしょう．差分全体が空白の固定量と思われる場合，@command{patch}は
自動的に字下げを無視します．前後の文を使用した差分のそれぞれの行に改行が
後置されている場合，@command{patch}は自動的に改行を無視します．前後の文
を使用した差分が，@uref{ftp://ftp.isi.edu/in-notes/rfc934.txt, Internet
RFC 934}によって，@samp{-}で始まる行に@w{@samp{- }}を前置することでカプ
セル化されている場合，@command{patch}は自動的に入力のカプセル化を外しま
す．

@c However, certain other types of imperfect input require user
@c intervention or testing.
@c 
しかし，他の形式の不完全な入力では，ユーザが介入したりテストしたりする必
要があります．

@menu
* Changed White Space:: When tabs and spaces don't match exactly.
* Reversed Patches::    Applying reversed patches correctly.
* Inexact::             Helping @command{patch} find close matches.
* Dry Runs::            Predicting what @command{patch} will do.
@end menu

@node Changed White Space
@c @subsection Applying Patches with Changed White Space
@subsection 空白が変更されているパッチを適用する
@cindex white space in patches

@c Sometimes mailers, editors, or other programs change spaces into tabs,
@c or vice versa.  If this happens to a patch file or an input file, the
@c files might look the same, but @command{patch} will not be able to match
@c them properly.  If this problem occurs, use the @option{-l} or
@c @option{--ignore-white-space} option, which makes @command{patch} compare
@c blank characters (i.e.@: spaces and tabs) loosely so that any nonempty
@c sequence of blanks in the patch file matches any nonempty sequence of
@c blanks in the input files.  Non-blank
@c characters must still match exactly.  Each line of the context must
@c still match a line in the input file.
@c 
メーラ，エディタ，またはその他のプログラムによって，スペースをタブまたは
その反対に変更するものもあります．これがパッチファイルや入力ファイルに対
して生じている場合，ファイルは同じように見えますが，@command{patch}はそ
れらを適切にマッチさせることが不可能です．この問題が生じる場合，パッチファ
イルの空ではない連続した空白が空ではない入力ファイルの連続した空白にマッ
チするように，@command{patch}の空白文字(例えば，スペースとタブ)の比較を
曖昧にさせる，@option{-l}や@option{--ignore-white-space}オプションを使用
してください．空白ではない文字は正確にマッチするはずです．周りの文のそれ
ぞれの行は，入力ファイルの行にマッチするはずです．

@node Reversed Patches
@c @subsection Applying Reversed Patches
@subsection リバースパッチを適用する
@cindex reversed patches

@c Sometimes people run @command{diff} with the new file first instead of
@c second.  This creates a diff that is ``reversed''.  To apply such
@c patches, give @command{patch} the @option{-R} or @option{--reverse} option.
@c @command{patch} then attempts to swap each hunk around before applying it.
@c Rejects come out in the swapped format.
@c 
二番目のファイルの代わりに最初の新しいファイルで@command{diff}を実行する
こともあります．これで``リバース''の差分が生成されます．そのようなパッチ
を適用するために，@command{patch}に@option{-R}や@option{--reverse}オプショ
ンを与えてください．@command{patch}はそれぞれのhunkの周りを，それを適用
する前に入れ換えようとします．除外されたものは入れ換えられた書式に出力さ
れます．

@c Often @command{patch} can guess that the patch is reversed.  If the first
@c hunk of a patch fails, @command{patch} reverses the hunk to see if it can
@c apply it that way.  If it can, @command{patch} asks you if you want to have
@c the @option{-R} option set; if it can't, @command{patch} continues to apply
@c the patch normally.  This method cannot detect a reversed patch if it is
@c a normal diff and the first command is an append (which should have been
@c a delete) since appends always succeed, because a null context matches
@c anywhere.  But most patches add or change lines rather than delete them,
@c so most reversed normal diffs begin with a delete, which fails, and
@c @command{patch} notices.
@c 
パッチがリバースだと@command{patch}が分かることもよくあります．パッチファ
イルの最初のhunkで失敗する場合，リバースすることで適用可能かどうかを判定
するために，@command{patch}はhunkをリバースします．可能な場合，
@command{patch}は@option{-R}オプションを設定したいかどうかを尋ねます．不
可能な場合，@command{patch}は通常通りパッチを適用し続けます．パッチが通
常の差分で，最初のコマンドの追加が常に成功するため(削除されているであろ
う)最初のコマンドが追加されている場合，空文がどこかでマッチするので，こ
の手法でリバースパッチを検出することは不可能です．しかし，ほとんどのパッ
チは行を削除するのではなく追加したり変更したりしているので，ほとんどの通
常のリバース差分は削除で始まり，失敗すると@command{patch}はそれに注目し
ます．

@c If you apply a patch that you have already applied, @command{patch} thinks
@c it is a reversed patch and offers to un-apply the patch.  This could be
@c construed as a feature.  If you did this inadvertently and you don't
@c want to un-apply the patch, just answer @samp{n} to this offer and to
@c the subsequent ``apply anyway'' question---or type @kbd{C-c} to kill the
@c @command{patch} process.
@c 
既に適用しているパッチを適用する場合，@command{patch}はそれをリバースパッ
チだと考え，パッチを逆に適用するように提案します．これは特長と言っても良
いでしょう．不注意にこうしてしまい，パッチを逆に適用したくない場合，その
まま続けて``適用する''ために，この提案に@samp{n}と答えてください --- ま
たは，@command{patch}処理を中止するために@kbd{C-c}を入力してください．

@node Inexact
@c @subsection Helping @command{patch} Find Inexact Matches
@subsection 不正確なマッチを@command{patch}が見つけるように手助けをする
@cindex inexact patches
@cindex fuzz factor when patching

@c For context diffs, and to a lesser extent normal diffs, @command{patch} can
@c detect when the line numbers mentioned in the patch are incorrect, and
@c it attempts to find the correct place to apply each hunk of the patch.
@c As a first guess, it takes the line number mentioned in the hunk, plus
@c or minus any offset used in applying the previous hunk.  If that is not
@c the correct place, @command{patch} scans both forward and backward for a
@c set of lines matching the context given in the hunk.
@c 
周りの文を使用した差分と，より少ない範囲の通常の差分に対して，パッチが記
述している行番号が正しくないときは，@command{patch}は正しいものを検出す
ることが可能で，パッチのhunkを適用する正しい場所を見つけようとします．最
初に見つかると，hunkで記述されている行番号に，以前にhunkに適用したオフセッ
トを加えたり引いたりします．それが正しい場所ではない場合，hunkで与えられ
る周りの文に一致する行の前後を@command{patch}はスキャンします．

@c First @command{patch} looks for a place where all lines of the context
@c match.  If it cannot find such a place, and it is reading a context or
@c unified diff, and the maximum fuzz factor is set to 1 or more, then
@c @command{patch} makes another scan, ignoring the first and last line of
@c context.  If that fails, and the maximum fuzz factor is set to 2 or
@c more, it makes another scan, ignoring the first two and last two lines
@c of context are ignored.  It continues similarly if the maximum fuzz
@c factor is larger.
@c 
最初に@command{patch}は周りの文のすべての行がマッチする場所を探します．
そのような場所を見つけることができず，周りの文を使用している差分や一体化
した差分を読み込んでいて，最大のfuzzの要素が1以上に設定されている場合，
周りの文の最初と最後の行を無視しながら，@command{patch}はもう一度スキャ
ンします．それでも失敗し，最大のfuzzの要素が2以上に設定されている場合，
周りの文の最初の二行と最後の二行を無視しながらもう一度スキャンします．最
大のfuzzの要素がそれより大きい場合は，同様に続けていきます．

@c The @option{-F @var{lines}} or @option{--fuzz=@var{lines}} option sets the
@c maximum fuzz factor to @var{lines}.  This option only applies to context
@c and unified diffs; it ignores up to @var{lines} lines while looking for
@c the place to install a hunk.  Note that a larger fuzz factor increases
@c the odds of making a faulty patch.  The default fuzz factor is 2; there
@c is no point to setting it to more than the number of lines of context
@c in the diff, ordinarily 3.
@c 
@option{-F @var{lines}}や@option{--fuzz=@var{lines}}オプションで，最大の
fuzzの要素を@var{lines}に設定します．このオプションは，周りの文を使用し
ている差分や一体化した差分だけに適用されます．hunkを導入する場所を探して
いる間，@var{lines}行まで無視します．より大きなfuzzの要素で，不完全なパッ
チを作成する可能性が高くなることに注意してください．デフォルトのfuzzの値
は2です．周りの文を使用した差分の行数，通常は三行，以上に設定しても意味
はありません．

@c If @command{patch} cannot find a place to install a hunk of the patch, it
@c writes the hunk out to a reject file (@pxref{Reject Names}, for information
@c on how reject files are named).  It writes out rejected hunks in context
@c format no matter what form the input patch is in.  If the input is a
@c normal or @command{ed} diff, many of the contexts are simply null.  The
@c line numbers on the hunks in the reject file may be different from those
@c in the patch file: they show the approximate location where @command{patch}
@c thinks the failed hunks belong in the new file rather than in the old
@c one.
@c 
@command{patch}がパッチのhunkを導入する場所を見つけることができない場合，
hunkをリジェクトファイルに書き出します(リジェクトファイルの命名方法は，
@pxref{Reject Names})．入力されるパッチの形式のまま，リジェクトされた周
りの文を用いた書式のhunkを書き出しても問題ありません．入力が通常または
@command{ed}の差分の場合，周りの文の多くは単にヌルになります．リジェクト
ファイルのhunkの行数は，これらのパッチファイルとは異なります．
@command{patch}が失敗したファイルが属する適切な場所を，古いファイルでは
なく新しいファイルで示しています．

@c If the @option{--verbose} option is given, then as it completes each
@c hunk @command{patch} tells you whether the hunk succeeded or failed, and
@c if it failed, on which line (in the new file) @command{patch} thinks the
@c hunk should go.  If this is different from the line number specified in
@c the diff, it tells you the offset.  A single large offset @emph{may}
@c indicate that @command{patch} installed a hunk in the wrong place.
@c @command{patch} also tells you if it used a fuzz factor to make the
@c match, in which case you should also be slightly suspicious.
@c 
@option{--verbose}オプションが与えられている場合，それぞれのhunkが完了す
るとき，@command{patch}はhunkが成功したか失敗したかを告げ，失敗した場合，
hunkを適用すべき行だと@command{patch}が考える(新しいファイルの)行を報告
します．これが差分で指定されている行番号と異なる場合，そのオフセットを報
告します．単一の大きなオフセットは，@command{patch}がhunkを間違った場所
に導入していることを示している@emph{可能性があります}．疑わしい場合も，
@command{patch}は，マッチするようにfuzz要素を使用したかどうかを報告しま
す．

@c @command{patch} cannot tell if the line numbers are off in an @command{ed}
@c script, and can only detect wrong line numbers in a normal diff when it
@c finds a change or delete command.  It may have the same problem with a
@c context diff using a fuzz factor equal to or greater than the number of
@c lines of context shown in the diff (typically 3).  In these cases, you
@c should probably look at a context diff between your original and patched
@c input files to see if the changes make sense.  Compiling without errors
@c is a pretty good indication that the patch worked, but not a guarantee.
@c 
@command{patch}は，行番号が@command{ed}スクリプトでoffになっているかどう
かを報告することはできませんが，変更や削除コマンドになっている通常の差分
での間違った行番号を検出することだけは可能です．差分に表示されている周り
の文の行数(通常は3)以上のfuzz 要素を使用しているときの，周りの文を使用し
た差分でも同じ問題があるかもしれません．この状況では，オリジナルとパッチ
をあてる入力の間を変更することに意味があるかどうかを知るために，周りの文
を使用した差分を見るべきでしょう．エラー無く組み込まれると，パッチが動作
したことを見事に示していますが，保証はしていません．

@c A patch against an empty file applies to a nonexistent file, and vice
@c versa.  @xref{Creating and Removing}.
@c 
空のファイルへのパッチは，存在しないファイルに適用され，その逆も真です．
@xref{Creating and Removing}.

@c @command{patch} usually produces the correct results, even when it must
@c make many guesses.  However, the results are guaranteed only when
@c the patch is applied to an exact copy of the file that the patch was
@c generated from.
@c 
@command{patch}は通常，たくさん推測する必要があっても，正しい結果を生成
します．しかし，結果はパッチが生成されたファイルのコピーに正確に適用され
るときだけ保証されます．

@node Dry Runs
@c @subsection Predicting what @command{patch} will do
@subsection @command{patch}が行なうことの予測
@cindex testing @command{patch}
@cindex dry runs for @command{patch}

@c It may not be obvious in advance what @command{patch} will do with a
@c complicated or poorly formatted patch.  If you are concerned that the
@c input might cause @command{patch} to modify the wrong files, you can
@c use the @option{--dry-run} option, which causes @command{patch} to
@c print the results of applying patches without actually changing any
@c files.  You can then inspect the diagnostics generated by the dry run
@c to see whether @command{patch} will modify the files that you expect.
@c If the patch does not do what you want, you can modify the patch (or
@c the other options to @command{patch}) and try another dry run.  Once
@c you are satisfied with the proposed patch you can apply it by invoking
@c @command{patch} as before, but this time without the
@c @option{--dry-run} option.
@c 
@command{patch}が複雑なまたは不完全な書式のパッチをどのように処理するか
は，あらかじめ明確でないかもしれません．入力で@command{patch}が間違った
ファイルを編集することが心配な場合，実際にファイルを変更することなく
@command{patch}がパッチを適用した結果を出力する，@option{--dry-run}オプ
ションを使用することが可能です．@command{patch}が期待したファイルを編集
するかどうかを調べるために，予行演習をすることで生成される診断結果を，検
査することが可能です．パッチが期待したものでない場合，パッチ(または
@command{patch}のその他のオプション)を編集して，もう一度予行演習すること
が可能です．パッチの目的に満足したら，@command{patch}を前回同様に呼び出
すことで適用することが可能で，このときは@option{--dry-run}オプションは用
いません．

@node Creating and Removing
@c @section Creating and Removing Files
@section ファイルの作成と削除
@cindex creating files
@cindex empty files, removing
@cindex removing empty files

@c Sometimes when comparing two directories, a file may exist in one
@c directory but not the other.  If you give @command{diff} the
@c @option{-N} or @option{--new-file} option, or if you supply an old or
@c new file that is named @file{/dev/null} or is empty and is dated the
@c Epoch (1970-01-01 00:00:00 UTC), @command{diff} outputs a patch that
@c adds or deletes the contents of this file.  When given such a patch,
@c @command{patch} normally creates a new file or removes the old file.
@c However, when conforming to @sc{posix} (@pxref{patch and POSIX}),
@c @command{patch} does not remove the old file, but leaves it empty.
@c The @option{-E} or @option{--remove-empty-files} option causes
@c @command{patch} to remove output files that are empty after applying a
@c patch, even if the patch does not appear to be one that removed the
@c file.
@c 
二つのディレクトリを比較しているとき，一方のディレクトリに存在しているファ
イルがもう一方には無いこともあるかもしれません．@command{diff}に
@option{-N}や@option{--new-file}オプションを与える場合や，
@file{/dev/null}という名前のファイルや空のファイル，そしてEpoch
(1970-01-01 00:00:00 UTC)の日付のファイルで，古いファイルや新しいファイ
ルを提供した場合，@command{diff}はこのファイルの内容を追加したり削除した
りします．そのようなパッチが与えられたとき，@command{patch}は通常，新し
いファイルを作成したり，古いファイルを削除したりします．しかし，
@sc{posix}(@pxref{patch and POSIX})に準拠するとき，@command{patch}は古い
ファイルを削除せず，空にして残します．@option{-E}や
@option{--remove-empty-files}オプションで，パッチを適用後に空になる出力
ファイルを，パッチがファイルを削除するようには見えない場合でも
@command{patch}は削除します．

@c If the patch appears to create a file that already exists,
@c @command{patch} asks for confirmation before applying the patch.
@c 
パッチが既存のファイルを作成するように見える場合，@command{patch}はパッ
チを適用する前に，確認のため尋ねてきます．

@node Patching Time Stamps
@c @section Updating Time Stamps on Patched Files
@section パッチファイルのタイムスタンプを更新
@cindex time stamps on patched files

@c When @command{patch} updates a file, it normally sets the file's
@c last-modified time stamp to the current time of day.  If you are using
@c @command{patch} to track a software distribution, this can cause
@c @command{make} to incorrectly conclude that a patched file is out of
@c date.  For example, if @file{syntax.c} depends on @file{syntax.y}, and
@c @command{patch} updates @file{syntax.c} and then @file{syntax.y}, then
@c @file{syntax.c} will normally appear to be out of date with respect to
@c @file{syntax.y} even though its contents are actually up to date.
@c 
@command{patch}がファイルを更新するとき，通常ファイルの最終更新のタイム
スタンプを現在の日時に設定します．ソフトウエア配布物の追跡に
@command{patch}を使用している場合，これで@command{make}は，パッチをあて
たファイルが古いものだと間違って推定するはずです．例えば，
@file{syntax.c}が@file{syntax.y}に依存していて@command{patch}が
@file{syntax.c}を更新してから@file{syntax.y}を更新する場合，
@file{syntax.y}が更新されているにもかかわらず，@file{syntax.c}はそれより
古いものになります．

@c The @option{-Z} or @option{--set-utc} option causes @command{patch} to
@c set a patched file's modification and access times to the time stamps
@c given in context diff headers.  If the context diff headers do not
@c specify a time zone, they are assumed to use Coordinated Universal
@c Time (@sc{utc}, often known as @sc{gmt}).
@c 
@option{-Z}や@option{--set-utc}オプションで，@command{patch}はパッチをあ
てたファイルの編集時刻とアクセス時刻を，周りの文を使用した差分のヘッダで
与えられるタイムスタンプに設定します．周りの文を使用した差分のヘッダに，
タイムゾーンが指定されていない場合，Coordinated Universal Time(@sc{gmt} 
として知られていることが多い@sc{utc})だと仮定します．

@c The @option{-T} or @option{--set-time} option acts like @option{-Z} or
@c @option{--set-utc}, except that it assumes that the context diff
@c headers' time stamps use local time instead of @sc{utc}.  This option
@c is not recommended, because patches using local time cannot easily be
@c used by people in other time zones, and because local time stamps are
@c ambiguous when local clocks move backwards during daylight-saving time
@c adjustments.  If the context diff headers specify a time zone, this
@c option is equivalent to @option{-Z} or @option{--set-utc}.
@c 
@option{-T}や@option{--set-time}オプションは，@option{-Z}や
@option{--set-utc}のように動作しますが，周りの文を使用した差分のヘッダの
タイムスタンプを，@sc{utc}の代わりにローカルタイムを使用していると仮定し
ます．ローカルタイムを使用しているパッチは，他のタイムゾーンにいる人が簡
単に使用することが不可能で，ローカルなタイムスタンプは，ローカルな時計が
夏時間に調整されている間に戻ってしまうので，このオプションは推奨されませ
ん．周りの文を使用した差分のヘッダがタイムゾーンを指定している場合，この
オプションは，@option{-Z}や@option{--set-utc}と等価です．

@c @command{patch} normally refrains from setting a file's time stamps if
@c the file's original last-modified time stamp does not match the time
@c given in the diff header, of if the file's contents do not exactly
@c match the patch.  However, if the @option{-f} or @option{--force}
@c option is given, the file's time stamps are set regardless.
@c 
@command{patch}は通常，ファイルのオリジナルの最終更新のタイムスタンプが
差分のヘッダで与えられるタイムスタンプとマッチしない場合や，ファイルの内
容がパッチに正しくマッチしない場合，ファイルのタイムスタンプで設定されて
いるものにすることを差し控えます．しかし，@option{-f}や@option{--force} 
オプションが設定されている場合，ファイルのタイムスタンプはおかまいなしに
設定されます．

@c Due to the limitations of the current @command{diff} format,
@c @command{patch} cannot update the times of files whose contents have
@c not changed.  Also, if you set file time stamps to values other than
@c the current time of day, you should also remove (e.g., with @samp{make
@c clean}) all files that depend on the patched files, so that later
@c invocations of @command{make} do not get confused by the patched
@c files' times.
@c 
現在の@command{diff}書式の制限のため，@command{patch}で内容が変更されて
いないファイルのタイムスタンプを更新することは不可能です．また，ファイル
のタイムスタンプを現在の日時以外に設定する場合，後に@command{make}の呼び
出しで，パッチをあてたファイルのタイムスタンプで混乱しないように，パッチ
をあてるファイルに依存するすべてのファイルも(例えば@samp{make clean}で) 
削除するべきです．

@node Multiple Patches
@c @section Multiple Patches in a File
@section ファイル内の複数のパッチ
@cindex multiple patches
@cindex intuiting file names from patches

@c If the patch file contains more than one patch, and if you do not
@c specify an input file on the command line, @command{patch} tries to
@c apply each patch as if they came from separate patch files.  This
@c means that it determines the name of the file to patch for each patch,
@c and that it examines the leading text before each patch for file names
@c and prerequisite revision level (@pxref{Making Patches}, for more on
@c that topic).
@c 
パッチファイルは一つ以上のパッチが含まれている場合，そして，コマンドライ
ンで入力ファイルを指定していない場合，@command{patch}はそれぞれのファイ
ルを個別のパッチファイルから来たもののように適用します．これは，それぞれ
のパッチに対するパッチをあてるファイル名を決定し，ファイル名に対するそれ
ぞれのパッチの前に前置されているテキストと，必要条件となるリビジョンレベ
ルを調べるということを意味します(この話題の詳細は，@pxref{Making
Patches})．

@c @command{patch} uses the following rules to intuit a file name from
@c the leading text before a patch.  First, @command{patch} takes an
@c ordered list of candidate file names as follows:
@c 
パッチの前に前置されてるテキストからファイル名を直観で知るために，
@command{patch}は以下の規則を使用します．最初に，@command{patch}は以下の
ような対象となるファイル名の順序のあるリストを受けとります．

@itemize @bullet
@item
@c If the header is that of a context diff, @command{patch} takes the old
@c and new file names in the header.  A name is ignored if it does not
@c have enough slashes to satisfy the @option{-p@var{num}} or
@c @option{--strip=@var{num}} option.  The name @file{/dev/null} is also
@c ignored.
@c 
ヘッダが周りの文を使用した差分の場合，@command{patch}は古いものと新しい
もののファイル名をヘッダから受けとります．@option{-p@var{num}}や
@option{--strip=@var{num}}オプションに満たないスラッシュしかない場合，名
前は無視されます．@file{/dev/null}という名前も無視されます．

@item
@c If there is an @samp{Index:} line in the leading garbage and if either
@c the old and new names are both absent or if @command{patch} is
@c conforming to @sc{posix}, @command{patch} takes the name in the
@c @samp{Index:} line.
@c 
前置される不要な情報に@samp{Index:}行があり，古いものの名前も新しいもの
の名前も両方とも無い，または@command{patch}が@sc{posix}に準拠している場
合，@command{patch}は@samp{Index:}行の名前を受けとります．

@item
@c For the purpose of the following rules, the candidate file names are
@c considered to be in the order (old, new, index), regardless of the
@c order that they appear in the header.
@c 
以下の規則の目的で，対象となるファイル名は，ヘッダに現れる順番によらず，
(古いもの，新しいもの，索引の)順番にならんでいると考えられます．
@end itemize

@noindent
@c Then @command{patch} selects a file name from the candidate list as
@c follows:
@c 
そして，@command{patch}は以下のような対象となるファイルのリストからファ
イル名を選択します．

@itemize @bullet
@item
@c If some of the named files exist, @command{patch} selects the first
@c name if conforming to @sc{posix}, and the best name otherwise.
@c 
指定されたファイルが存在する場合，@sc{posix}に準拠している場合は最初の名
前を，それ以外では最適な名前を選択します．

@item
@c If @command{patch} is not ignoring @sc{rcs}, ClearCase, and @sc{sccs}
@c (@pxref{Revision Control}), and no named files exist but an @sc{rcs},
@c ClearCase, or @sc{sccs} master is found, @command{patch} selects the
@c first named file with an @sc{rcs}, ClearCase, or @sc{sccs} master.
@c 
@command{patch}が@sc{rcs}，ClearCase，そして@sc{sccs}(@pxref{Revision
Control})を無視せず，@sc{rcs}，ClearCase，または@sc{sccs}以外の名前のファ
イルが存在しない場合，@command{patch}は@sc{rcs}，ClearCase，または
@sc{sccs}のマスターで最初に指名されたファイルを選択します．

@item
@c If no named files exist, no @sc{rcs}, ClearCase, or @sc{sccs} master
@c was found, some names are given, @command{patch} is not conforming to
@c @sc{posix}, and the patch appears to create a file, @command{patch}
@c selects the best name requiring the creation of the fewest
@c directories.
@c 
指名したファイルが存在しないせず，@sc{rcs}，ClearCase，または@sc{sccs}の
マスターも見つからない，名前が与えられていない，@command{patch}が
@sc{posix}に準拠していない，そしてパッチがファイルを作成しているように見
える場合，@command{patch}はディレクトリの作成が最小になるように，要求さ
れている最適な名前を選択します．

@item
@c If no file name results from the above heuristics, you are asked for
@c the name of the file to patch, and @command{patch} selects that name.
@c 
上記の発見的手法の結果でもファイル名が付かない場合，パッチをあてるファイ
ル名を尋ねられ，@command{patch}はその名前を選択します．
@end itemize

@c To determine the @dfn{best} of a nonempty list of file names,
@c @command{patch} first takes all the names with the fewest path name
@c components; of those, it then takes all the names with the shortest
@c basename; of those, it then takes all the shortest names; finally, it
@c takes the first remaining name.
@c 
ファイル名の空ではない@dfn{最適な(best)}リストを決定するため，
@command{patch}は最初に，パス名の構成要素を最小にして，すべての名前を受
けとります．そして，最短のベース名にしてすべての名前を受けとります．そし
て，すべての最短の名前を受けとります．最後に，残っている最初の名前を受け
とります．

@c @xref{patch and POSIX}, to see whether @command{patch} is conforming
@c to @sc{posix}.
@c 
@command{patch}が@sc{posix}に準拠しているかどうかを知るために，
@xref{patch and POSIX}.

@node patch Directories
@c @section Applying Patches in Other Directories
@section 他のディレクトリでパッチを適用する
@cindex directories and patch
@cindex patching directories

@c The @option{-d @var{directory}} or @option{--directory=@var{directory}}
@c option to @command{patch} makes directory @var{directory} the current
@c directory for interpreting both file names in the patch file, and file
@c names given as arguments to other options (such as @option{-B} and
@c @option{-o}).  For example, while in a mail reading program, you can patch
@c a file in the @file{/usr/src/emacs} directory directly from a message
@c containing the patch like this:
@c 
@option{-d @var{directory}}や@option{--directory=@var{directory}}オプショ
ンを@command{patch}に渡すと，ディレクトリ@var{directory}を，パッチファイ
ル内のファイル名と，それ以外の(@option{-B}と@option{-o}のような)オプショ
ンの引数として与えられているファイル名の両方を解読するカレントディレクト
リにしにします．例えば，メールを読むプログラムで，@file{/usr/src/emacs} 
ディレクトリに，以下のようなパッチを含むメッセージから直接ファイルにパッ
チをあてることが可能です．

@example
| patch -d /usr/src/emacs
@end example

@c Sometimes the file names given in a patch contain leading directories,
@c but you keep your files in a directory different from the one given in
@c the patch.  In those cases, you can use the
@c @option{-p@var{number}} or @option{--strip=@var{number}}
@c option to set the file name strip count to @var{number}.  The strip
@c count tells @command{patch} how many slashes, along with the directory
@c names between them, to strip from the front of file names.  A sequence
@c of one or more adjacent slashes is counted as a single slash.  By
@c default, @command{patch} strips off all leading directories, leaving
@c just the base file names.
@c 
パッチで与えられるファイル名にディレクトリが前置されてはいるものの，パッ
チで与えられているディレクトリとは異なるディレクトリにファイルを保持した
いときもあります．この状況では，ファイル名を@var{number}個切り取って設定
するために，@option{-p@var{number}}や@option{--strip=@var{number}}オプショ
ンを使用することが可能です．切り取り数は，ファイル名の最初から切り取る，
ディレクトリ名が間にはいっている，スラッシュの数を@command{patch}に伝え
ます．一つ以上の隣接したスラッシュは，単一のスラッシュとして数えられます．
デフォルトで，@command{patch}はすべての前置したディレクトリを切捨て，ファ
イルのベース名だけを残します．

@c For example, suppose the file name in the patch file is
@c @file{/gnu/src/emacs/etc/NEWS}.  Using @option{-p0} gives the
@c entire file name unmodified, @option{-p1} gives
@c @file{gnu/src/emacs/etc/NEWS} (no leading slash), @option{-p4} gives
@c @file{etc/NEWS}, and not specifying @option{-p} at all gives @file{NEWS}.
@c 
例えば，パッチファイルのファイル名が@file{/gnu/src/emacs/etc/NEWS}だと仮
定します．@option{-p0}を使用すると，ファイル名は編集されずに全部与えられ，
@option{-p1}では，@file{gnu/src/emacs/etc/NEWS}(前置されたスラッシュが無
い)が与えられ，@option{-p4}では@file{etc/NEWS}が与えられ，@option{-p}を
全く指定しなければ，@file{NEWS}が与えられます．

@c @command{patch} looks for each file (after any slashes have been stripped)
@c in the current directory, or if you used the @option{-d @var{directory}}
@c option, in that directory.
@c 
@command{patch}はカレントディレクトリで，(スラッシュを切り捨てた後)それ
ぞれのファイルを探し，@option{-d @var{directory}}を使用した場合はそのディ
レクトリで探します．

@node Backups
@c @section Backup Files
@section バックアップファイル
@cindex backup file strategy

@c Normally, @command{patch} creates a backup file if the patch does not
@c exactly match the original input file, because in that case the
@c original data might not be recovered if you undo the patch with
@c @samp{patch -R} (@pxref{Reversed Patches}).  However, when conforming
@c to @sc{posix}, @command{patch} does not create backup files by
@c default.  @xref{patch and POSIX}.
@c 
通常，パッチが正確にオリジナルの入力ファイルにマッチしない場合，その状況
では@samp{patch -R} (@pxref{Reversed Patches})でパッチを元に戻す場合にオ
リジナルデータが元に戻らないので，バックアップファイルを作成します．しか
し，@sc{posix}に準拠しているとき，@command{patch}はデフォルトでバックアッ
プファイルを作成しません．@xref{patch and POSIX}.

@c The @option{-b} or @option{--backup} option causes @command{patch} to
@c make a backup file regardless of whether the patch matches the
@c original input.  The @option{--backup-if-mismatch} option causes
@c @command{patch} to create backup files for mismatches files; this is
@c the default when not conforming to @sc{posix}.  The
@c @option{--no-backup-if-mismatch} option causes @command{patch} to not
@c create backup files, even for mismatched patches; this is the default
@c when conforming to @sc{posix}.
@c 
@option{-b}や@option{--backup}オプションで，@command{patch}はパッチがオ
リジナルの入力にマッチするかどうかに依存せずバックアップファイルを作成し
ます．@option{--backup-if-mismatch}オプションでは，@command{patch}はマッ
チしないファイルに対してバックアップファイルを作成します．これは，
@sc{posix}に準拠していないときのデフォルトです．
@option{--no-backup-if-mismatch}オプションで，@command{patch}はマッチし
ないファイルに対してもバックアップファイルを作成しません．これは
@sc{posix}に準拠しているときのデフォルトです．

@c When backing up a file that does not exist, an empty, unreadable
@c backup file is created as a placeholder to represent the nonexistent
@c file.
@c 
バックアップファイルが存在しないとき，存在しないファイルを再生成させる場
所として，空の読み込み不可能なバックアップファイルが作成されます．

@node Backup Names
@c @section Backup File Names
@section バックアップファイル名
@cindex backup file names

@c Normally, @command{patch} renames an original input file into a backup
@c file by appending to its name the extension @samp{.orig}, or @samp{~}
@c if using @samp{.orig} would make the backup file name too
@c long.@footnote{A coding error in @sc{gnu} @command{patch} version
@c 2.5.4 causes it to always use @samp{~}, but this should be fixed in
@c the next release.}  The @option{-z @var{backup-suffix}} or
@c @option{--suffix=@var{backup-suffix}} option causes @command{patch} to
@c use @var{backup-suffix} as the backup extension instead.
@c 
通常，@command{patch}は，オリジナルの入力ファイルを，その名前に拡張子
@samp{.orig}や，@samp{.orig}がバックアップファイルとして長過ぎる場合は
@samp{~}を後置したバックアップファイルに名前を変えます．
@footnote{@sc{gnu} @command{patch}のバージョン2.5.4でのコーディングエラー
で，常に@samp{~}が使用されますが，次のリリースで修正されるでしょう．}
@option{-z @var{backup-suffix}}や@option{--suffix=@var{backup-suffix}}オ
プションで，代わりのバックアップ用拡張子として@command{patch}は
@var{backup-suffix}を使用します．

@vindex SIMPLE_BACKUP_SUFFIX
@c Alternately, you can specify the extension for backup files with the
@c @env{SIMPLE_BACKUP_SUFFIX} environment variable, which the options
@c override.
@c 
また，@env{SIMPLE_BACKUP_SUFFIX}環境変数でバックアップファイルの拡張子を
指定することも可能ですが，オプションが優先されます．

@c @command{patch} can also create numbered backup files the way @sc{gnu} Emacs
@c does.  With this method, instead of having a single backup of each file,
@c @command{patch} makes a new backup file name each time it patches a file.
@c For example, the backups of a file named @file{sink} would be called,
@c successively, @file{sink.~1~}, @file{sink.~2~}, @file{sink.~3~}, etc.
@c 
@command{patch}では，@sc{gnu} Emacsのように番号付のバックアップファイル
を作成することも可能です．この手法を用いることで，それぞれのファイルに対
して単一のバックアップファイルを持つ代わりに，@command{patch}でファイル
にパッチを当てるたびに新しいバックアップファイルを作成します．例えば，
@file{sink}という名前のファイルのバックアップは，連続的に，
@file{sink.~1~}，@file{sink.~2~}，@file{sink.~3~}等になります．

@vindex PATCH_VERSION_CONTROL
@vindex VERSION_CONTROL
@c The @option{-V @var{backup-style}} or
@c @option{--version-control=@var{backup-style}} option takes as an
@c argument a method for creating backup file names.  You can alternately
@c control the type of backups that @command{patch} makes with the
@c @env{PATCH_VERSION_CONTROL} environment variable, which the
@c @option{-V} option overrides.  If @env{PATCH_VERSION_CONTROL} is not
@c set, the @env{VERSION_CONTROL} environment variable is used instead.
@c Please note that these options and variables control backup file
@c names; they do not affect the choice of revision control system
@c (@pxref{Revision Control}).
@c 
@option{-V @var{backup-style}}や
@option{--version-control=@var{backup-style}}オプションは，バックアップ
ファイルを作成する手法を引数として受け入れます．@command{patch}が
@env{PATCH_VERSION_CONTROL}環境変数を用いて作成するバックアップの形式を
制御することも可能で，@option{-V}オプションで優先します．
@env{PATCH_VERSION_CONTROL}が設定されていない場合，@env{VERSION_CONTROL} 
環境変数が代わりに使用されます．これらのオプションや変数でバックアップファ
イルの名前を制御することに注意してください．リビジョンコントロールシステ
ムの選択には影響しません(@pxref{Revision Control})．

@c The values of these environment variables and the argument to the
@c @option{-V} option are like the @sc{gnu} Emacs @code{version-control}
@c variable (@pxref{Backup Names, , , emacs, The @sc{gnu} Emacs Manual},
@c for more information on backup versions in Emacs).  They also
@c recognize synonyms that are more descriptive.  The valid values are
@c listed below; unique abbreviations are acceptable.
@c 
環境変数と@option{-V}オプションの引数の値は，@sc{gnu} Emacsの
@code{version-control}変数に似ています(Emacsのバックアップバージョンの詳
細は，@pxref{Backup Names, , , emacs, The @sc{gnu} Emacs Manual})．それ
らは，より記述的な同義語も認識します．有効な値は以下にリストアップしてい
ます．一意に求まる省略も受け入れます．

@table @option
@item t
@itemx numbered
@c Always make numbered backups.
@c 
常に番号付のバックアップファイルを作成します．

@item nil
@itemx existing
@c Make numbered backups of files that already have them, simple backups of
@c the others.  This is the default.
@c 
既に存在しているファイルの番号付のバックアップを作成し，それ以外では単純
なバックアップを作成します．これはデフォルトです．

@item never
@itemx simple
@c Always make simple backups.
@c 
常に単純なバックアップを作成します．
@end table

@c You can also tell @command{patch} to prepend a prefix, such as a
@c directory name, to produce backup file names.  The @option{-B
@c @var{prefix}} or @option{--prefix=@var{prefix}} option makes backup
@c files by prepending @var{prefix} to them.  The @option{-Y
@c @var{prefix}} or @option{--basename-prefix=@var{prefix}} prepends
@c @var{prefix} to the last file name component of backup file names
@c instead; for example, @option{-Y ~} causes the backup name for
@c @file{dir/file.c} to be @file{dir/~file.c}.  If you use either of
@c these prefix options, the suffix-based options are ignored.
@c 
@command{patch}に，ディレクトリ名のような接頭辞を付けてバックアップファ
イルを作成するるように伝えることも可能です．@option{-B @var{prefix}}や
@option{--prefix=@var{prefix}}オプションで，@var{prefix}を前置したバック
アップファイルを作成します．@option{-Y @var{prefix}}や
@option{--basename-prefix=@var{prefix}}で，バックアップファイル名のファ
イル名の構成要素の最後に，その代わりに@var{prefix}を前置します．例えば，
@option{-Y ~}で@file{dir/file.c}のバックアップファイルは
@file{dir/~file.c}になります．これらの接頭辞オプションの一つを使用した場
合，接尾子をベースにしたオプションは無視されます．

@c If you specify the output file with the @option{-o} option, that file is
@c the one that is backed up, not the input file.
@c 
出力ファイルを@option{-o}オプションで指定する場合，そのファイルはバック
アップされたものになりますが，入力ファイルではありません．

@c Options that affect the names of backup files do not affect whether
@c backups are made.  For example, if you specify the
@c @option{--no-backup-if-mismatch} option, none of the options described
@c in this section have any affect, because no backups are made.
@c 
バックアップファイルの名前に影響するオプションは，バックアップを作成する
かどうかに影響しません．例えば，@option{--no-backup-if-mismatch}オプショ
ンを指定した場合はバックアップが作成されないので，このセクションで記述さ
れているオプションは全く影響しません．

@node Reject Names
@c @section Reject File Names
@section リジェクトされたファイル名
@cindex reject file names

@c The names for reject files (files containing patches that
@c @command{patch} could not find a place to apply) are normally the name
@c of the output file with @samp{.rej} appended (or @samp{#} if if using
@c @samp{.rej} would make the backup file name too long).
@c 
リジェクトファイル(パッチに含まれているファイルで，@command{patch}を適用
する場所を見つけられなかったファイル)に対する名前は通常，出力ファイルに
@samp{.rej}を後置して命名されます(または，@samp{.rej}を用いた場合，バッ
クアップファイル名が長過ぎる場合は@samp{#}になります)．

@c Alternatively, you can tell @command{patch} to place all of the rejected
@c patches in a single file.  The @option{-r @var{reject-file}} or
@c @option{--reject-file=@var{reject-file}} option uses @var{reject-file} as
@c the reject file name.
@c 
また，すべてのリジェクトされたファイル名を単一のファイルに書くように伝え
ることも可能です．@option{-r @var{reject-file}}や
@option{--reject-file=@var{reject-file}}オプションは，@var{reject-file} 
をリジェクトされたファイル名として使用します．

@node patch Messages
@c @section Messages and Questions from @command{patch}
@section @command{patch}からのメッセージと質問
@cindex @command{patch} messages and questions
@cindex diagnostics from @command{patch}
@cindex messages from @command{patch}

@c @command{patch} can produce a variety of messages, especially if it
@c has trouble decoding its input.  In a few situations where it's not
@c sure how to proceed, @command{patch} normally prompts you for more
@c information from the keyboard.  There are options to produce more or
@c fewer messages, to have it not ask for keyboard input, and to
@c affect the way that file names are quoted in messages.
@c 
@command{patch}は，特に入力のデコードで問題がある場合，様々なメッセージ
を生成するはずです．処理方法が分からないような状況で，@command{patch}は
通常，キーボードから更に情報を入力するように促します．キーボードからの入
力を促さないようにしたり，メッセージ内のファイル名を引用符で囲む方法に効
果を与えるために，メッセージを多くしたり少なくしたりするオプションもあり
ます．

@menu
* More or Fewer Messages::    Controlling the verbosity of @command{patch}.
* patch and Keyboard Input::  Inhibiting keyboard input.
* patch Quoting Style::       Quoting file names in diagnostics.
@end menu

@c @command{patch} exits with status 0 if all hunks are applied successfully,
@c 1 if some hunks cannot be applied, and 2 if there is more serious trouble.
@c When applying a set of patches in a loop, you should check the
@c exit status, so you don't apply a later patch to a partially patched
@c file.
@c 
@command{patch}は，すべてのhunkが正しく適用された場合は0，hunkが適用でき
なかった場合は1，そして，より重要な問題がある場合は2のステータスで終了し
ます．ループでパッチの組を適用しているとき，部分的にパッチを当てたファイ
ルにそれ以降適用しないように，終了ステータスを調査すべきです．

@node More or Fewer Messages
@c @subsection Controlling the Verbosity of @command{patch}
@subsection @command{patch}の冗長な制御
@cindex verbose messages from @command{patch}
@cindex inhibit messages from @command{patch}

@c You can cause @command{patch} to produce more messages by using the
@c @option{--verbose} option.  For example, when you give this option,
@c the message @samp{Hmm...} indicates that @command{patch} is reading text in
@c the patch file, attempting to determine whether there is a patch in that
@c text, and if so, what kind of patch it is.
@c 
@option{--verbose}オプションを用いることで，@command{patch}により多くの
メッセージを生成させることが可能です．例えば，このオプションを与えたとき，
メッセージ@samp{Hmm...}は，@command{patch}がパッチファイルのテキストを読
み込んで，テキストにパッチがあるかどうかの決定を試み，存在する場合はパッ
チの種類が何かの決定を試みていることを示します．

@c You can inhibit all terminal output from @command{patch}, unless an error
@c occurs, by using the @option{-s}, @option{--quiet}, or @option{--silent}
@c option.
@c 
@option{-s}，@option{--quiet}，または@option{--silent}オプションを使用す
ることで，エラーが発生しない限り，@command{patch}からの端末へのすべての
出力を抑制することが可能です．

@node patch and Keyboard Input
@c @subsection Inhibiting Keyboard Input
@subsection キーボード入力の抑制
@cindex keyboard input to @command{patch}

@c There are two ways you can prevent @command{patch} from asking you any
@c questions.  The @option{-f} or @option{--force} option assumes that you know
@c what you are doing.  It causes @command{patch} to do the following:
@c 
@command{patch}が尋ねることを避ける方法は二つあります．@option{-f}や
@option{--force}オプションは，行なっていることが分かっていることを仮定し
ます．それで@command{patch}は以下のことを行ないます．

@itemize @bullet
@item
@c Skip patches that do not contain file names in their headers.
@c 
ヘッダにファイル名が含まれていないパッチを省略します．

@item
@c Patch files even though they have the wrong version for the
@c @samp{Prereq:} line in the patch;
@c 
パッチの@samp{Prereq:}行に対する間違ったバージョンでさえファイルにパッチ
を当てます．

@item
@c Assume that patches are not reversed even if they look like they are.
@c 
パッチがリバースパッチのように見えてもリバースパッチと仮定しません．
@end itemize

@noindent
@c The @option{-t} or @option{--batch} option is similar to @option{-f}, in that
@c it suppresses questions, but it makes somewhat different assumptions:
@c 
@option{-t}や@option{--batch}オプションは@option{-f}に似ていて，質問を抑
制しますが，仮定は多少異なります．

@itemize @bullet
@item
@c Skip patches that do not contain file names in their headers
@c (the same as @option{-f}).
@c 
ヘッダにファイル名が含まれていないパッチを省略します(@option{-f}と同じで
す)．

@item
@c Skip patches for which the file has the wrong version for the
@c @samp{Prereq:} line in the patch;
@c 
パッチの@samp{Prereq:}行に対する間違ったバージョンのファイルにはパッチを
当てません．

@item
@c Assume that patches are reversed if they look like they are.
@c 
パッチがリバースパッチのように見える場合，リバースパッチと仮定します．
@end itemize

@node patch Quoting Style
@c @subsection @command{patch} Quoting Style
@subsection @command{patch}が引用符で囲む形式
@cindex quoting style

@c When @command{patch} outputs a file name in a diagnostic message, it
@c can format the name in any of several ways.  This can be useful to
@c output file names unambiguously, even if they contain punctuation or
@c special characters like newlines.  The
@c @option{--quoting-style=@var{word}} option controls how names are
@c output.  The @var{word} should be one of the following:
@c 
@command{patch}が診断メッセージでファイル名を出力するとき，名前の書式は
何通りかになります．出力ファイル名に，句読点や改行のような特殊文字を含ん
でいる場合でさえ，それを明確にするとき役に立つはずです．
@option{--quoting-style=@var{word}}オプションで，名前の出力方法を制御し
ます．@var{word}は以下の一つです．

@table @samp
@item literal
@c Output names as-is.
@c 
名前をそのまま出力します．
@item shell
@c Quote names for the shell if they contain shell metacharacters or would
@c cause ambiguous output.
@c 
名前にシェルのメタ文字や明確でない出力になる場合，シェルに対して名前を引
用符で囲みます．
@item shell-always
@c Quote names for the shell, even if they would normally not require quoting.
@c 
名前が通常のもので引用符で囲む必要が無い場合でも，シェルに対して名前を引
用符で囲みます．
@item c
@c Quote names as for a C language string.
@c 
C言語の文字列のように，名前を引用符で囲みます．
@item escape
@c Quote as with @samp{c} except omit the surrounding double-quote
@c characters.
@c 
周りの二重引用不文字を削除する以外，@samp{c}のように引用符で囲みます．
@c The following are not yet implemented in patch 2.5.4.
@c @item clocale
@c Quote as with @samp{c} except use quotation marks appropriate for the
@c locale.
@c @item locale
@c @c Use @t instead of @samp to avoid duplicate quoting in some output styles.
@c Like @samp{clocale}, but quote @t{`like this'} instead of @t{"like
@c this"} in the default C locale.  This looks nicer on many displays.
@end table

@vindex QUOTING_STYLE
@c You can specify the default value of the @option{--quoting-style}
@c option with the environment variable @env{QUOTING_STYLE}.  If that
@c environment variable is not set, the default value is @samp{shell},
@c but this default may change in a future version of @command{patch}.
@c 
@option{--quoting-style}オプションのデフォルト値を，環境変数
@env{QUOTING_STYLE}で指定することが可能です．この環境変数が設定されてい
ない場合，デフォルト値は@samp{shell}ですが，@command{patch}の将来のバー
ジョンでは，このデフォルト値は変更されるかもしれません．

@node patch and POSIX
@c @section @command{patch} and the @sc{posix} Standard
@section @command{patch}と@sc{posix}の標準
@cindex @sc{posix}

@vindex POSIXLY_CORRECT
@c If you specify the @option{--posix} option, or set the
@c @env{POSIXLY_CORRECT} environment variable, @command{patch} conforms
@c more strictly to the @sc{posix} standard, as follows:
@c 
@option{--posix}オプションを指定したり，@env{POSIXLY_CORRECT}環境変数を
設定した場合，@command{patch}は厳密に@sc{posix}の標準に従い，それは以下
の内容です．

@itemize @bullet
@item
@c Take the first existing file from the list (old, new, index)
@c when intuiting file names from diff headers.  @xref{Multiple Patches}.
@c 
差分のヘッダからファイル名を見るとき，リスト(古い，新しい，インデックス) 
の最初に存在するファイルを受けとります．@xref{Multiple Patches}.

@item
@c Do not remove files that are removed by a diff.
@c @xref{Creating and Removing}.
@c 
差分で削除されるファイルを削除しません．@xref{Creating and Removing}.

@item
@c Do not ask whether to get files from @sc{rcs}, ClearCase, or
@c @sc{sccs}.  @xref{Revision Control}.
@c 
@sc{rcs}，ClearCase，または@sc{sccs}からファイルを取得するかどうかを尋ね
ません．@xref{Revision Control}.

@item
@c Require that all options precede the files in the command line.
@c 
コマンドラインで，すべてのオプションがファイルに前置されていることを要求
します．

@item
@c Do not backup files, even when there is a mismatch.  @xref{Backups}.
@c 
不一致があったとしても，ファイルをバックアップしません．@xref{Backups}.
@end itemize

@node patch and Tradition
@c @section @sc{gnu} @command{patch} and Traditional @command{patch}
@section @sc{gnu} @command{patch}と伝統的な@command{patch}
@cindex traditional @command{patch}

@c The current version of @sc{gnu} @command{patch} normally follows the
@c @sc{posix} standard.  @xref{patch and POSIX}, for the few exceptions
@c to this general rule.
@c 
現在のバージョンの@sc{gnu} @command{patch}は，通常@sc{posix}の標準に従い
ます．この一般的な規則へのわずかな例外は，@xref{patch and POSIX}.

@c Unfortunately, @sc{posix} redefined the behavior of @command{patch} in
@c several important ways.  You should be aware of the following
@c differences if you must interoperate with traditional @command{patch},
@c or with @sc{gnu} @command{patch} version 2.1 and earlier.
@c 
残念ながら@sc{posix}では，複数の重要な方法で，@command{patch}の動作を再
定義しています．伝統的な@command{patch}や@sc{gnu} @command{patch}のバー
ジョン2.1とそれ以前で内部処理する必要がある場合，以下の違いを知っておく
べきです．

@itemize @bullet
@item
@c In traditional @command{patch}, the @option{-p} option's operand was
@c optional, and a bare @option{-p} was equivalent to @option{-p0}.  The
@c @option{-p} option now requires an operand, and @option{-p@ 0} is now
@c equivalent to @option{-p0}.  For maximum compatibility, use options
@c like @option{-p0} and @option{-p1}.
@c 
伝統的な@command{patch}では，@option{-p}のオペランドはオプションで，
@option{-p}だけだと@option{-p0}と等価です．現在@option{-p}オプションはオ
ペランドを要求し，@option{-p@ 0}は現在@option{-p0}と等価です．互換性を最
大にするため，@option{-p0}と@option{-p1}のようなオプションを使用してくだ
さい．

@c Also, traditional @command{patch} simply counted slashes when
@c stripping path prefixes; @command{patch} now counts pathname
@c components.  That is, a sequence of one or more adjacent slashes now
@c counts as a single slash.  For maximum portability, avoid sending
@c patches containing @file{//} in file names.
@c 
また，伝統的な@command{patch}は，前置されるパスを取り除くとき，単純にス
ラッシュを数えていきます．@command{patch}は現在，パス名の構成要素を数え
ます．すなわち，一つ以上の隣接するスラッシュは，現在単一のスラッシュとし
て数えられます．互換性を最大にするため，ファイル名に@file{//}を含むパッ
チを送るのは避けてください．

@item
@c In traditional @command{patch}, backups were enabled by default.  This
@c behavior is now enabled with the @option{-b} or @option{--backup}
@c option.
@c 
伝統的な@command{patch}は，デフォルトでバックアップが可能です．この動作
は現在，@option{-b}や@option{--backup}オプションで利用可能です．

@c Conversely, in @sc{posix} @command{patch}, backups are never made,
@c even when there is a mismatch.  In @sc{gnu} @command{patch}, this
@c behavior is enabled with the @option{--no-backup-if-mismatch} option,
@c or by conforming to @sc{posix}.
@c 
反対に，@sc{posix}の@command{patch}では，バックアップは一致しないものが
あるときでも決して作成されません．@sc{gnu} @command{patch}では，この動作
は@option{--no-backup-if-mismatch}オプションや，@sc{posix}準拠にすること
で利用可能です．

@c The @option{-b@ @var{suffix}} option of traditional @command{patch} is
@c equivalent to the @samp{-b -z@ @var{suffix}} options of @sc{gnu}
@c @command{patch}.
@c 
伝統的な@command{patch}の@option{-b@ @var{suffix}}オプションは，@sc{gnu}
@command{patch}の@samp{-b -z@ @var{suffix}}オプションと等価です．

@item
@c Traditional @command{patch} used a complicated (and incompletely
@c documented) method to intuit the name of the file to be patched from
@c the patch header.  This method did not conform to @sc{posix}, and had
@c a few gotchas.  Now @command{patch} uses a different, equally
@c complicated (but better documented) method that is optionally
@c @sc{posix}-conforming; we hope it has fewer gotchas.  The two methods
@c are compatible if the file names in the context diff header and the
@c @samp{Index:} line are all identical after prefix-stripping.  Your
@c patch is normally compatible if each header's file names all contain
@c the same number of slashes.
@c 
伝統的な@command{patch}は，パッチヘッダからパッチを当てるファイル名を直
観するために，複雑な(そしてドキュメントが不完全な)手法を使用していました．
この手法は，@sc{posix}に準拠しておらず，わずかにgotchaもあります．現在
@command{patch}は，別の複雑な(しかしドキュメントがより良い)，オプション
で@sc{posix}に準拠している手法を使用してます．よりgotchaが少ないことを期
待しています．その二つの手法は，周りの文を使用した差分のヘッダがファイル
名で，@samp{Index:}行が前置物を取り除いた後でもすべて識別できる場合，互
換性があります．ヘッダのファイル名が同じ数のスラッシュを含んでいる場合，
通常はパッチに互換性があります．

@item
@c When traditional @command{patch} asked the user a question, it sent
@c the question to standard error and looked for an answer from the first
@c file in the following list that was a terminal: standard error,
@c standard output, @file{/dev/tty}, and standard input.  Now
@c @command{patch} sends questions to standard output and gets answers
@c from @file{/dev/tty}.  Defaults for some answers have been changed so
@c that @command{patch} never goes into an infinite loop when using
@c default answers.
@c 
伝統的な@command{patch}はユーザに質問するとき，標準エラー出力に質問を送
り，端末となっている以下のリストの最初のファイルから答を探します．標準エ
ラー出力，標準出力，@file{/dev/tty}，そして標準入力です．現在
@command{patch}は，標準出力に質問を送り，答を@file{/dev/tty}から受けとり
ます．質問に対するデフォルトは，デフォルトの答えを使用するとき
@command{patch}が無限ループにならないように変更されています．

@item
@c Traditional @command{patch} exited with a status value that counted
@c the number of bad hunks, or with status 1 if there was real trouble.
@c Now @command{patch} exits with status 1 if some hunks failed, or with
@c 2 if there was real trouble.
@c 
伝統的な@command{patch}は，悪いhunkの数を数えたステータス値や，本当に問
題があったとき1になるステータスで終了していました．現在@command{patch}は，
hunkに失敗したものがある場合は1のステータス，本当に問題があったときは2の
ステータスで終了します．

@item
@c Limit yourself to the following options when sending instructions
@c meant to be executed by anyone running @sc{gnu} @command{patch},
@c traditional @command{patch}, or a @command{patch} that conforms to
@c @sc{posix}.  Spaces are significant in the following list, and
@c operands are required.
@c 
@sc{gnu} @command{patch}，伝統的な@command{patch}，または，@sc{posix}準
拠の@command{patch}を実行している人に実行方法を説明するとき，以下のオプ
ションに制限してください．以下のリストのスペースは重要で，オペランドは必
要です．

@example
@option{-c}
@option{-d @var{dir}}
@option{-D @var{define}}
@option{-e}
@option{-l}
@option{-n}
@option{-N}
@option{-o @var{outfile}}
@option{-p@var{num}}
@option{-R}
@option{-r @var{rejectfile}}
@end example

@end itemize

@node Making Patches
@c @chapter Tips for Making and Using Patches
@chapter パッチの作成と使用の助言

@c Use some common sense when making and using patches.  For example,
@c when sending bug fixes to a program's maintainer, send several small
@c patches, one per independent subject, instead of one large,
@c harder-to-digest patch that covers all the subjects.
@c 
パッチを作成したり使用したりするときは，常識を考慮してください．例えば，
プログラム管理者にバグフィックスを送るとき，すべての主張をカバーする分か
りにくい一つの大きなパッチの代わりに，一つの主張ごとに独立な小さなパッチ
を複数送ってください．

@c Here are some other things you should keep in mind if you are going to
@c distribute patches for updating a software package.
@c 
ソフトウエアパッケージの更新でパッチを配布しようとする場合，それ以外に覚
えておくべきことは以下のとおりです．

@menu
* Tips for Patch Producers::    Advice for making patches.
* Tips for Patch Consumers::    Advice for using patches.
* Avoiding Common Mistakes::    Avoiding common mistakes when using @command{patch}.
* Generating Smaller Patches::  How to generate smaller patches.
@end menu

@node Tips for Patch Producers
@c @section Tips for Patch Producers
@section パッチを生成するための助言
@cindex patch producer tips

@c To create a patch that changes an older version of a package into a
@c newer version, first make a copy of the older and newer versions in
@c adjacent subdirectories.  It is common to do that by unpacking
@c @command{tar} archives of the two versions.
@c 
パッケージの古いバージョンを新しいバージョンに変更するパッチを作成するた
め，最初に古いバージョンと新しいバージョンのコピーを隣接するサブディレク
トリに作成してください．二つのバージョンを@command{tar}アーカイブに格納
するのが一般的です．

@c To generate the patch, use the command @samp{diff -Naur @var{old}
@c @var{new}} where @var{old} and @var{new} identify the old and new
@c directories.  The names @var{old} and @var{new} should not contain any
@c slashes.  The @option{-N} option lets the patch create and remove
@c files; @option{-a} lets the patch update non-text files; @option{-u}
@c generates useful time stamps and enough context; and @option{-r} lets
@c the patch update subdirectories.  Here is an example command, using
@c Bourne shell syntax:
@c 
パッチを生成するために，@var{old}と@var{new}をそれぞれ古いものと新しいも
のがあるディレクトリにして，コマンド@samp{diff -Naur @var{old}
@var{new}}を使用してください．名前の@var{old}と@var{new}にスラッシュを含
めるべきではありません．@option{-N}オプションで，ファイルを作成したり削
除したりします．@option{-a}で，テキストファイル以外も更新するパッチにな
ります．@option{-u}で，タイムスタンプと周りの文が十分にり役に立つパッチ
を生成します．そして，@option{-r}でパッチはサブディレクトリも更新します．
以下はコマンド例で，Bourneシェルの構文を使用しています．

@example
diff -Naur gcc-3.0.3 gcc-3.0.4
@end example

@c Tell your recipients how to apply the patches.  This should include
@c which working directory to use, and which @command{patch} options to
@c use; the option @samp{-p1} is recommended.  Test your procedure by
@c pretending to be a recipient and applying your patches to a copy of
@c the original files.
@c 
受けとる人にパッチの適用方法を伝えてください．これには使用する作業用ディ
レクトリと，使用する@command{patch}のオプションも含めるべきです．受け手
が行なうように手順をテストし，オリジナルファイルにパッチを適用してくださ
い．

@c @xref{Avoiding Common Mistakes}, for how to avoid common mistakes when
@c generating a patch.
@c 
パッチを生成するときの一般的な誤解を避ける方法は，@xref{Avoiding Common
Mistakes}.

@node Tips for Patch Consumers
@c @section Tips for Patch Consumers
@section パッチを使用するための助言
@cindex patch consumer tips

@c A patch producer should tell recipients how to apply the patches, so
@c the first rule of thumb for a patch consumer is to follow the
@c instructions supplied with the patch.
@c 
パッチの作成者は，受け手にパッチの適用方法を伝えているはずなので，パッチ
の使用者の第一の規則は，パッチで提供される説明に従うことです．

@c @sc{gnu} @command{diff} can analyze files with arbitrarily long lines
@c and files that end in incomplete lines.  However, older versions of
@c @command{patch} cannot patch such files.  If you are having trouble
@c applying such patches, try upgrading to a recent version of @sc{gnu}
@c @command{patch}.
@c 
@sc{gnu} @command{diff}では，任意の長い行を持つファイルと不完全な行で終
るファイルを解析することが可能です．しかし，@command{patch}の古いバージョ
ンでは，そのようなファイルにパッチを当てることは不可能です．そのようなパッ
チの適用時に問題がある場合，最近のバージョンの@sc{gnu} @command{patch}に
更新してみてください．

@node Avoiding Common Mistakes
@c @section Avoiding Common Mistakes
@section 一般的な誤解を避ける
@cindex common mistakes with patches
@cindex patch, common mistakes

@c When producing a patch for multiple files, apply @command{diff} to
@c directories whose names do not have slashes.  This reduces confusion
@c when the patch consumer specifies the @option{-p@var{number}} option,
@c since this option can have surprising results when the old and new
@c file names have different numbers of slashes.  For example, do not
@c send a patch with a header that looks like this:
@c 
複数のファイルのパッチを生成しているとき，@command{diff}はスラッシュの無
いディレクトリ名に適用します．こうすることで，パッチの利用者が
@option{-p@var{number}}を指定しているとき混乱が少なくなり，それは，この
オプションで古いものと新しいもののファイル名でスラッシュの数が異なる場合，
びっくりするような結果になるためです．例えば，以下のようなヘッダを持つパッ
チを送らないでください．

@example
diff -Naur v2.0.29/prog/README prog/README
--- v2.0.29/prog/README	2002-03-10 23:30:39.942229878 -0800
+++ prog/README	2002-03-17 20:49:32.442260588 -0800
@end example

@noindent
@c because the two file names have different numbers of slashes, and
@c different versions of @command{patch} interpret the file names
@c differently.  To avoid confusion, send output that looks like this
@c instead:
@c 
その理由は，二つのファイル名のスラッシュの数が異なっていて，異なるバージョ
ンの@command{patch}では，ファイル名が異なっていると解釈するためです．混
乱を避けるため，その代わりに以下のような出力を送ってください．

@example
diff -Naur v2.0.29/prog/README v2.0.30/prog/README
--- v2.0.29/prog/README	2002-03-10 23:30:39.942229878 -0800
+++ v2.0.30/prog/README	2002-03-17 20:49:32.442260588 -0800
@end example

@c Make sure you have specified the file names correctly, either in a
@c context diff header or with an @samp{Index:} line.  Take care to not send out
@c reversed patches, since these make people wonder whether they have
@c already applied the patch.
@c 
周りの文を使用した差分のヘッダや@samp{Index:}行で，正しくファイル名を指
定していることを確かめてください．既にパッチを当てたかどうか不思議に思う
ので，リバースパッチを送らないように注意してください．

@c Avoid sending patches that compare backup file names like
@c @file{README.orig} or @file{README~}, since this might confuse
@c @command{patch} into patching a backup file instead of the real file.
@c Instead, send patches that compare the same base file names in
@c different directories, e.g.@: @file{old/README} and @file{new/README}.
@c 
@file{README.orig}や@file{README~}のようなバックアップファイル名と比較し
ているパッチは，@command{patch}が本当のファイルの代わりにバックアップファ
イルにパッチを当てようとして混乱するので，そのようなパッチを送ることを避
けてください．その代わりに，異なるディレクトリ，例えば@file{old/README} 
と@file{new/README}のように，同じベースファイル名で比較したパッチを送っ
てください．

@c To save people from partially applying a patch before other patches that
@c should have gone before it, you can make the first patch in the patch
@c file update a file with a name like @file{patchlevel.h} or
@c @file{version.c}, which contains a patch level or version number.  If
@c the input file contains the wrong version number, @command{patch} will
@c complain immediately.
@c 
以前に送られた他のパッチを実際に適用している人を保護するために，パッチファ
イルの最初のパッチに，パッチレベルやバージョンナンバーが含まれている
@file{patchlevel.h}や@file{version.c}のような名前でファイルを更新させる
ことが可能です．入力ファイルに間違ったバージョンナンバーが含まれている場
合，@command{patch}はすぐに文句をいいます．

@c An even clearer way to prevent this problem is to put a @samp{Prereq:}
@c line before the patch.  If the leading text in the patch file contains a
@c line that starts with @samp{Prereq:}, @command{patch} takes the next word
@c from that line (normally a version number) and checks whether the next
@c input file contains that word, preceded and followed by either
@c white space or a newline.  If not, @command{patch} prompts you for
@c confirmation before proceeding.  This makes it difficult to accidentally
@c apply patches in the wrong order.
@c 
この問題を避けるより明確な方法は，パッチの前に@samp{Prereq:}行を書くこと
です．パッチファイルに前置されるテキストに@samp{Prereq:}で始まる行が含ま
れている場合，@command{patch}はその行の次の単語(通常はバージョンナンバー) 
を受けとり，次の入力ファイルに空白や改行が前後にある単語が含まれているか
どうか調査します．そうでない場合は，@command{patch}は処理する前に確認す
るためのプロンプトを出します．これで間違った順序でパッチを偶然にも適用す
ることが難しくなります．

@node Generating Smaller Patches
@c @section Generating Smaller Patches
@section より小さいパッチを生成する
@cindex patches, shrinking

@c The simplest way to generate a patch is to use @samp{diff -Naur}
@c (@pxref{Tips for Patch Producers}), but you might be able to reduce
@c the size of the patch by renaming or removing some files before making
@c the patch.  If the older version of the package contains any files
@c that the newer version does not, or if any files have been renamed
@c between the two versions, make a list of @command{rm} and @command{mv}
@c commands for the user to execute in the old version directory before
@c applying the patch.  Then run those commands yourself in the scratch
@c directory.
@c 
パッチを生成する最も単純な方法は@samp{diff -Naur}を使用することですが
(@pxref{Tips for Patch Producers})，パッチを作成する前にファイルの名前を
変更したり削除したりすることで，パッチの大きさを小さくすることも可能かも
しれません．古いバージョンのパッケージに新しいバージョンにはないファイル
が含まれている場合や，二つのバージョン間で名前が変更されている場合，パッ
チを適用する前に，古いバージョンのディレクトリでユーザが実行する
@command{rm}と@command{mv}のリストを作成してください．そしてこれらのコマ
ンドをスクラッチのディレクトリで実行してください．

@c If there are any files that you don't need to include in the patch
@c because they can easily be rebuilt from other files (for example,
@c @file{TAGS} and output from @command{yacc} and @command{makeinfo}),
@c exclude them from the patch by giving @command{diff} the @option{-x
@c @var{pattern}} option (@pxref{Comparing Directories}).  If you want
@c your patch to modify a derived file because your recipients lack tools
@c to build it, make sure that the patch for the derived file follows any
@c patches for files that it depends on, so that the recipients' time
@c stamps will not confuse @command{make}.
@c 
他のファイルから容易に再構成可能だという理由から(例えば，@file{TAGS}と
@command{yacc}と@command{makeinfo}からの出力)，パッチを含める必要がない
ファイルが存在する場合，@command{diff}に@option{-x @var{pattern}}オプショ
ン(@pxref{Comparing Directories})で得られるパッチを実行してください．パッ
チ利用者がビルドするツールが無いため，パッチで派生ファイルを編集したくな
い場合，パッチ利用者のタイムスタンプで@command{make}が混乱しないように，
派生ファイルのパッチがそれに依存するファイルにパッチを当てないことを確か
めてください．

@c Now you can create the patch using @samp{diff -Naur}.  Make sure to
@c specify the scratch directory first and the newer directory second.
@c 
さて，@samp{diff -Naur}を使用してパッチを作成することが可能です．スクラッ
チディレクトリを最初に，新しいディレクトリを二番目に指定していることを確
かめてください．

@c Add to the top of the patch a note telling the user any @command{rm} and
@c @command{mv} commands to run before applying the patch.  Then you can
@c remove the scratch directory.
@c 
パッチの最初に，パッチを適用する前にユーザに@command{rm}と@command{mv}コ
マンドを実行するように伝えるメモを書いてください．やっと，スクラッチディ
レクトリを削除できます．

@c You can also shrink the patch size by using fewer lines of context,
@c but bear in mind that @command{patch} typically needs at least two
@c lines for proper operation when patches do not exactly match the input
@c files.
@c 
周りの文の使用をより小さくすることでパッチの大きさを小さくすることも可能
ですが，パッチが入力行に正確にマッチしないとき，適切な処理を行なうため，
@command{patch}は通常，最低二行必要だということを覚えておいてください．

@node Invoking cmp
@c @chapter Invoking @command{cmp}
@chapter @command{cmp}の呼び出し
@cindex invoking @command{cmp}
@cindex @command{cmp} invocation

@c The @command{cmp} command compares two files, and if they differ,
@c tells the first byte and line number where they differ.  Bytes and
@c lines are numbered starting with 1.  The arguments of @command{cmp}
@c are as follows:
@c 
@command{cmp}コマンドは二つのファイルを比較し，異なっている場合は異なっ
ている最初のバイトと行番号を報告します．バイトと行は，1で始まります．
@command{cmp}の引数は以下のとおりです．

@example
cmp @var{options}@dots{} @var{from-file} @r{[}@var{to-file} @r{[}@var{from-skip} @r{[}@var{to-skip}@r{]}@r{]}@r{]}
@end example

@c The file name @file{-} is always the standard input.  @command{cmp}
@c also uses the standard input if one file name is omitted.  The
@c @var{from-skip} and @var{to-skip} operands specify how many bytes to
@c ignore at the start of each file; they are equivalent to the
@c @option{--ignore-initial=@var{from-skip}:@var{to-skip}} option.
@c 
ファイル名の@file{-}は，常に標準入力になります．@command{cmp}は，ファイ
ル名の一つが省略されている場合も標準入力を使用します．@var{from-skip}と
@var{to-skip}オペランドは，それぞれのファイルの最初で無視するバイト数で
す．それらは，@option{--ignore-initial=@var{from-skip}:@var{to-skip}}オ
プションと等価です．

@c An exit status of 0 means no differences were found, 1 means some
@c differences were found, and 2 means trouble.
@c 
終了ステータスの0は差異が見つからないこと，1は差異が見つかったこと，そし
て0は問題が生じたことを意味します．

@menu
* cmp Options:: Summary of options to @command{cmp}.
@end menu

@node cmp Options
@c @section Options to @command{cmp}
@section @command{cmp}のオプション
@cindex @command{cmp} options
@cindex options for @command{cmp}

@c Below is a summary of all of the options that @sc{gnu} @command{cmp} accepts.
@c Most options have two equivalent names, one of which is a single letter
@c preceded by @samp{-}, and the other of which is a long name preceded by
@c @samp{--}.  Multiple single letter options (unless they take an
@c argument) can be combined into a single command line word: @option{-bl} is
@c equivalent to @option{-b -l}.
@c 
以下は，@sc{gnu} @command{cmp}が受け入れるオプションすべての概要です．ほ
とんどのオプションは二つの等価な名前があり，一つは@samp{-}を前置する単一
文字でもう一つは@samp{--}を前置する長い名前です．複数の(引数を取らない) 
単一文字のオプションを，単一のコマンドラインの単語に組み合わせることが可
能です．@option{-bl}は@option{-b -l}と等価です．

@table @option
@item -b
@itemx --print-bytes
@c Print the differing bytes.  Display control bytes as a
@c @samp{^} followed by a letter of the alphabet and precede bytes
@c that have the high bit set with @samp{M-} (which stands for ``meta'').
@c 
差異のあるバイトを出力します．制御文字は@samp{^}にアルファベットを続けて
表示し，ハイビットセットがあるものについては(``メタ(meta)''を意味する)
@samp{M-}をバイトに前置します．

@item --help
@c Output a summary of usage and then exit.
@c 
使用方の概要を出力し終了します．

@item -i @var{skip}
@itemx --ignore-initial=@var{skip}
@c Ignore any differences in the first @var{skip} bytes of the input
@c files.  Treat files with fewer than @var{skip} bytes as if they are
@c empty.  If @var{skip} is of the form
@c @option{@var{from-skip}:@var{to-skip}}, skip the first @var{from-skip}
@c bytes of the first input file and the first @var{to-skip} bytes of the
@c second.
@c 
入力ファイルの最初の@var{skip}バイトにある差異を無視します．@var{skip}バ
イトより小さいファイルは，空のファイルとして扱います．@var{skip}が
@option{@var{from-skip}:@var{to-skip}}の形式の場合，最初の入力ファイルの
最初の@var{from-skip}バイトと，二番目のものの最初の@var{to-skip}バイトを
読み飛ばします．

@item -l
@itemx --verbose
@c Print the (decimal) byte numbers and (octal) values of all differing bytes.
@c 
(10進数)のバイト数とすべての差異のあるバイトの(8進数)値を出力します．

@item -n @var{count}
@itemx --bytes=@var{count}
@c Compare at most @var{count} input bytes.
@c 
入力されたバイトの最大@var{count}を比較します．

@item -s
@itemx --quiet
@itemx --silent
@c Do not print anything; only return an exit status indicating whether
@c the files differ.
@c 
何も出力しません．ファイルが異なっているかどうかを示す終了ステータスのみ
返します．

@item -v
@itemx --version
@c Output version information and then exit.
@c 
バージョン情報を出力し終了します．
@end table

@c In the above table, operands that are byte counts are normally
@c decimal, but may be preceded by @samp{0} for octal and @samp{0x} for
@c hexadecimal.
@c 
上記の表では，バイトを数えるオペランドは通常10進数ですが，8進数に対して
は@samp{0}を，16進数に対しては@samp{0x}を前置してもかまいません．

@c A byte count can be followed by a suffix to specify a multiple of that
@c count; in this case an omitted integer is understood to be 1.  A bare
@c size letter, or one followed by @samp{iB}, specifies a multiple using
@c powers of 1024.  A size letter followed by @samp{B} specifies powers
@c of 1000 instead.  For example, @option{-n 4M} and @option{-n 4MiB} are
@c equivalent to @option{-n 4194304}, whereas @option{-n 4MB} is
@c equivalent to @option{-n 4000000}.  This notation is upward compatible
@c with the @uref{http://www.bipm.fr/enus/3_SI/si-prefixes.html, SI
@c prefixes} for decimal multiples and with the
@c @uref{http://physics.nist.gov/cuu/Units/binary.html, IEC 60027-2
@c prefixes for binary multiples}.
@c 
バイトを数えるとき，複数数えるための接尾子指定を後置することが可能です．
この場合，省略された整数は1として理解されます．サイズを示す文字だけのと
きや@samp{iB}が続くものは，1024倍を使用して指定します．@samp{B}が続くサ
イズを示す文字は，その代わりに1000倍を指定します．例えば，@option{-n 4M} 
と@option{-n 4MiB}は@option{-n 4194304}と等価ですが，@option{-n 4MB}は
@option{-n 4000000}と等価です．この表記方法は，10進数に対する
@uref{http://www.bipm.fr/enus/3_SI/si-prefixes.html, SI prefixes}と，
@uref{http://physics.nist.gov/cuu/Units/binary.html, IEC 60027-2
prefixes for binary multiples}への上位互換性のためです．

@c The following suffixes are defined.  Large sizes like @code{1Y} may be
@c rejected by your computer due to limitations of its arithmetic.
@c 
以下の接尾子が定義されています．@code{1Y}のような大きいサイズは計算の制
限のため，コンピュータによっては拒否されるかもしれません．

@table @samp
@item kB
@cindex kilobyte, definition of
@c kilobyte: @math{10^3 = 1000}.
@c 
キロバイト：@math{10^3 = 1000}.
@item k
@itemx K
@itemx KiB
@cindex kibibyte, definition of
@c kibibyte: @math{2^10 = 1024}.  @samp{K} is special: the SI prefix is
@c @samp{k} and the IEC 60027-2 prefix is @samp{Ki}, but tradition and
@c @sc{posix} use @samp{k} to mean @samp{KiB}.
@c 
キビバイト：@math{2^10 = 1024}．@samp{K}は特殊です．SIのプレフィクスは
@samp{k}，IEC 60027-2のプレフィクスは@samp{Ki}ですが，伝統的なものと
@sc{posix}では，@samp{k}を@samp{KiB}の意味で使用します．

@item MB
@cindex megabyte, definition of
@c megabyte: @math{10^6 = 1,000,000}.
@c 
メガバイト：@math{10^6 = 1,000,000}．
@item M
@itemx MiB
@cindex mebibyte, definition of
@c mebibyte: @math{2^20 = 1,048,576}.
@c 
メビバイト：@math{2^20 = 1,048,576}．
@item GB
@cindex gigabyte, definition of
@c gigabyte: @math{10^9 = 1,000,000,000}.
@c 
ギガバイト：@math{10^9 = 1,000,000,000}．
@item G
@itemx GiB
@cindex gibibyte, definition of
@c gibibyte: @math{2^30 = 1,073,741,824}.
@c 
ギビバイト：@math{2^30 = 1,073,741,824}．
@item TB
@cindex terabyte, definition of
@c terabyte:  @math{10^12 = 1,000,000,000,000}.
@c 
テラバイト：@math{10^12 = 1,000,000,000,000}．
@item T
@itemx TiB
@cindex tebibyte, definition of
@c tebibyte: @math{2^40 = 1,099,511,627,776}.
@c 
テビバイト：@math{2^40 = 1,099,511,627,776}．
@item PB
@cindex petabyte, definition of
@c petabyte: @math{10^15 = 1,000,000,000,000,000}.
@c 
ペタバイト：@math{10^15 = 1,000,000,000,000,000}．
@item P
@itemx PiB
@cindex pebibyte, definition of
@c pebibyte: @math{2^50 = 1,125,899,906,842,624}.
@c 
ペビバイト：@math{2^50 = 1,125,899,906,842,624}．
@item EB
@cindex exabyte, definition of
@c exabyte: @math{10^18 = 1,000,000,000,000,000,000}.
@c 
エクサバイト：@math{10^18 = 1,000,000,000,000,000,000}．
@item E
@itemx EiB
@cindex exbibyte, definition of
@c exbibyte: @math{2^60 = 1,152,921,504,606,846,976}.
@c 
エクシビバイト：@math{2^60 = 1,152,921,504,606,846,976}．
@item ZB
@cindex zettabyte, definition of
@c zettabyte: @math{10^21 = 1,000,000,000,000,000,000,000}.
@c 
ゼータバイト：@math{10^21 = 1,000,000,000,000,000,000,000}．
@item Z
@itemx ZiB
@c @math{2^70 = 1,180,591,620,717,411,303,424}.
@c (@samp{Zi} is a @sc{gnu} extension to IEC 60027-2.)
@c 
@math{2^70 = 1,180,591,620,717,411,303,424}．(@samp{Zi}はIEC 60027-2への
@sc{gnu}拡張です．)
@item YB
@cindex yottabyte, definition of
@c yottabyte: @math{10^24 = 1,000,000,000,000,000,000,000,000}.
@c 
ヨットバイト：@math{10^24 = 1,000,000,000,000,000,000,000,000}．
@item Y
@itemx YiB
@c @math{2^80 = 1,208,925,819,614,629,174,706,176}.
@c (@samp{Yi} is a @sc{gnu} extension to IEC 60027-2.)
@c 
@math{2^80 = 1,208,925,819,614,629,174,706,176}．(@samp{Yi}はIEC 60027-2
への@sc{gnu}拡張です．)
@end table

@node Invoking diff
@c @chapter Invoking @command{diff}
@chapter @command{diff}の呼び出し
@cindex invoking @command{diff}
@cindex @command{diff} invocation

@c The format for running the @command{diff} command is:
@c 
@command{diff}コマンドの実行書式は以下のとおりです．

@example
diff @var{options}@dots{} @var{files}@dots{}
@end example

@c In the simplest case, two file names @var{from-file} and
@c @var{to-file} are given, and @command{diff} compares the contents of
@c @var{from-file} and @var{to-file}.  A file name of @file{-} stands for
@c text read from the standard input.  As a special case, @samp{diff - -}
@c compares a copy of standard input to itself.
@c 
最も単純な場合，二つのファイル名@var{from-file}と@var{to-file}が与えられ
ていて，@command{diff}は@var{from-file}と@var{to-file}の内容を比較します．
ファイル名@file{-}は標準入力から読み込まれたテキストを意味します．特別な
場合として，@samp{diff - -}は，標準入力のコピーと標準入力自身を比較しま
す．

@c If one file is a directory and the other is not, @command{diff} compares
@c the file in the directory whose name is that of the non-directory.
@c The non-directory file must not be @file{-}.
@c 
一つのファイルがディレクトリで，もう一方はディレクトリではない場合，
@command{diff}はディレクトリではないファイルの名前を持つもう一つのディレ
クトリのファイルと比較します．ディレクトリではないファイルを，@file{-}に
してはいけません．

@c If two file names are given and both are directories,
@c @command{diff} compares corresponding files in both directories, in
@c alphabetical order; this comparison is not recursive unless the
@c @option{-r} or @option{--recursive} option is given.  @command{diff} never
@c compares the actual contents of a directory as if it were a file.  The
@c file that is fully specified may not be standard input, because standard
@c input is nameless and the notion of ``file with the same name'' does not
@c apply.
@c 
二つのファイル名が与えられ両方ともディレクトリの場合，@command{diff}は両
方のディレクトリの対応するファイルを，アルファベット順に比較します．この
比較は，@option{-r}や@option{--recursive}オプションが与えられていない限
り再帰的ではありません．@command{diff}は，ディレクトリの実際の内容をファ
イルであるかのように比較しません．標準入力には名前が無く``同じ名前のファ
イル''という概念が適用できないので，完全に指定されているファイルを標準入
力にしてはいけません．

@c If the @option{--from-file=@var{file}} option is given, the number of
@c file names is arbitrary, and @var{file} is compared to each named file.
@c Similarly, if the @option{--to-file=@var{file}} option is given, each
@c named file is compared to @var{file}.
@c 
@option{--from-file=@var{file}}オプションが与えられている場合，ファイル
名の数は任意で，@var{file}それぞれ指名されたファイルで比較されます．同様
に，@option{--to-file=@var{file}}オプションが与えられている場合，それぞ
れ指名されたファイルが，@var{file}と比較されます．

@c @command{diff} options begin with @samp{-}, so normally file names
@c may not begin with @samp{-}.  However, @option{--} as an
@c argument by itself treats the remaining arguments as file names even if
@c they begin with @samp{-}.
@c 
@command{diff}のオプションは@samp{-}で始まっているので，@samp{-}で始まる
ファイル名は通常利用不可能です．しかし，引数として@option{--}自身をを与
えることで，残りのファイル名が@samp{-}で始まる場合でもそれをファイル名と
して扱います．

@c An exit status of 0 means no differences were found, 1 means some
@c differences were found, and 2 means trouble.
@c 
終了ステータス0は差異が無いことを意味し，1は差異が見つかったことを意味し，
そして2は問題があったことを意味します．

@menu
* diff Options:: Summary of options to @command{diff}.
@end menu

@node diff Options
@c @section Options to @command{diff}
@section @command{diff}へのオプション
@cindex @command{diff} options
@cindex options for @command{diff}

@c Below is a summary of all of the options that @sc{gnu} @command{diff} accepts.
@c Most options have two equivalent names, one of which is a single letter
@c preceded by @samp{-}, and the other of which is a long name preceded by
@c @samp{--}.  Multiple single letter options (unless they take an
@c argument) can be combined into a single command line word: @option{-ac} is
@c equivalent to @option{-a -c}.  Long named options can be abbreviated to
@c any unique prefix of their name.  Brackets ([ and ]) indicate that an
@c option takes an optional argument.
@c 
以下は，@sc{gnu} @command{diff}が受け入れるすべてのオプションの概要です．
ほとんどのオプションは二つの等価な名前があり，一つは@samp{-}が前置された
単一文字で，もう一つは@samp{--}が前置されている長い名前です．複数の(引数
を取らない) 単一文字のオプションを，単一のコマンドラインの単語に組み合わ
せることが可能です．@option{-ac}は@option{-a -c}と等価です．長い名前のオ
プションは，その名前のユニークな前方部分で省略することが可能です．カッコ
([と])は，オプションで引数を取るオプションを示します．

@table @option
@item -a
@itemx --text
@c Treat all files as text and compare them line-by-line, even if they
@c do not seem to be text.  @xref{Binary}.
@c 
ファイルがテキストのようには見えない場合でも，すべてのファイルをテキスト
として扱い，行単位で比較します．@xref{Binary}.

@item -b
@itemx --ignore-space-change
@c Ignore changes in amount of white space.  @xref{White Space}.
@c 
空白の量による変更を無視します．@xref{White Space}.

@item -B
@itemx --ignore-blank-lines
@c Ignore changes that just insert or delete blank lines.  @xref{Blank
@c Lines}.
@c 
空白行の挿入や削除のみの変更を無視します．@xref{Blank Lines}.

@item --binary
@c Read and write data in binary mode.  @xref{Binary}.
@c 
バイナリモードでデータを読み書きします．@xref{Binary}.

@item -c
@c Use the context output format, showing three lines of context.
@c @xref{Context Format}.
@c 
周りの三行を表示しながら，周りの文を使用した出力書式を使用します．
@xref{Context Format}.

@item -C @var{lines}
@itemx --context@r{[}=@var{lines}@r{]}
@c Use the context output format, showing @var{lines} (an integer) lines of
@c context, or three if @var{lines} is not given.  @xref{Context Format}.
@c For proper operation, @command{patch} typically needs at least two lines of
@c context.
@c 
周りの@var{lines}行(整数)，または@var{lines}が与えられていない場合は三行
を表示しながら周りの文を使用した出力書式を使用します．@xref{Context
Format}.  適切に処理するため，通常@command{patch}は少なくとも二行必要で
す．

@c On older systems, @command{diff} supports an obsolete option
@c @option{-@var{lines}} that has effect when combined with @option{-c}
@c or @option{-p}.  @sc{posix} 1003.1-2001 (@pxref{Standards
@c conformance}) does not allow this; use @option{-C @var{lines}}
@c instead.
@c 
古いシステムでは，@command{diff}は，時代遅れの@option{-c}や@option{-p}と
組み合わせたとき効果がある@option{-@var{lines}}をサポートしています．
@sc{posix} 1003.1-2001 (@pxref{Standards conformance})では，これを許可し
ていません．代わりに@option{-C @var{lines}}を使用してください．

@item --changed-group-format=@var{format}
@c Use @var{format} to output a line group containing differing lines from
@c both files in if-then-else format.  @xref{Line Group Formats}.
@c 
if-then-else書式で，両方のファイルの異なっている部分の行グループを出力す
るため@var{format}を使用します．@xref{Line Group Formats}.

@item -d
@itemx --minimal
@c Change the algorithm perhaps find a smaller set of changes.  This makes
@c @command{diff} slower (sometimes much slower).  @xref{diff Performance}.
@c 
変更の組がより小さくなるように探すアルゴリズムに変更します．これで
@command{diff}はより遅く(時には非常に遅く)なります．@xref{diff
Performance}.

@item -D @var{name}
@itemx --ifdef=@var{name}
@c Make merged @samp{#ifdef} format output, conditional on the preprocessor
@c macro @var{name}.  @xref{If-then-else}.
@c 
マクロ名のポリプロセッサの条件式となる，マージされた@samp{#ifdef}書式の
出力を生成します．@xref{If-then-else}.

@item -e
@itemx --ed
@c Make output that is a valid @command{ed} script.  @xref{ed Scripts}.
@c 
有効な@command{ed}スクリプトとなる出力を生成します．@xref{ed Scripts}.

@item -E
@itemx --ignore-tab-expansion
@c Ignore changes due to tab expansion.
@c @xref{White Space}.
@c 
タブの展開による変更を無視します．@xref{White Space}.

@item -f
@itemx --forward-ed
@c Make output that looks vaguely like an @command{ed} script but has changes
@c in the order they appear in the file.  @xref{Forward ed}.
@c 
@command{ed}スクリプトのように見える出力を生成しますが，ファイルでの順序
は変更されています．@xref{Forward ed}.

@item -F @var{regexp}
@itemx --show-function-line=@var{regexp}
@c In context and unified format, for each hunk of differences, show some
@c of the last preceding line that matches @var{regexp}.  @xref{Specified
@c Headings}.
@c 
周りの文を使用したり一体化した書式で，それぞれの差異のhunkに対し，
@var{regexp}にマッチしたそれ以前にある最後の行を表示します．

@item --from-file=@var{file}
@c Compare @var{file} to each operand; @var{file} may be a directory.
@c 
@var{file}をそれぞれのオペランドと比較します．@var{file}はディレクトリで
もかまいません．

@item --help
@c Output a summary of usage and then exit.
@c 
使用方法の概要を出力し終了します．

@item --horizon-lines=@var{lines}
@c Do not discard the last @var{lines} lines of the common prefix
@c and the first @var{lines} lines of the common suffix.
@c @xref{diff Performance}.
@c 
共通の最初の部分の最後の@var{lines}行と共通の終りの部分の最初の
@var{lines}行を削除しません．@xref{diff Performance}.

@item -i
@itemx --ignore-case
@c Ignore changes in case; consider upper- and lower-case letters
@c equivalent.  @xref{Case Folding}.
@c 
大文字小文字の変更を無視します．大文字と小文字は等価だと考えます．
@xref{Case Folding}.

@item -I @var{regexp}
@itemx --ignore-matching-lines=@var{regexp}
@c Ignore changes that just insert or delete lines that match @var{regexp}.
@c @xref{Specified Folding}.
@c 
@var{regexp}にマッチする行の挿入と削除だけの変更を無視します．
@xref{Specified Folding}.

@item --ignore-file-name-case
@c Ignore case when comparing file names during recursive comparison.
@c @xref{Comparing Directories}.
@c 
再帰的な比較でファイル名を比較している時，大文字小文字を無視します．
@xref{Comparing Directories}.

@item -l
@itemx --paginate
@c Pass the output through @command{pr} to paginate it.  @xref{Pagination}.
@c 
ページ付けするために出力を@command{pr}に渡します．@xref{Pagination}.

@item -L @var{label}
@itemx --label=@var{label}
@c Use @var{label} instead of the file name in the context format
@c (@pxref{Context Format}) and unified format (@pxref{Unified Format})
@c headers.  @xref{RCS}.
@c 
周りの文を使用した書式(@pxref{Context Format})と一体化した書式
(@pxref{Unified Format})のヘッダで，ファイル名の代わりにラベルを使用しま
す．@xref{RCS}.

@item --left-column
@c Print only the left column of two common lines in side by side format.
@c @xref{Side by Side Format}.
@c 
横に並べた書式で，二つに共通な行を左の列だけに出力します．@xref{Side by
Side Format}.

@item --line-format=@var{format}
@c Use @var{format} to output all input lines in if-then-else format.
@c @xref{Line Formats}.
@c 
if-then-else書式で，すべての入力行を出力するため@var{format}を使用します．
@xref{Line Formats}.

@item -n
@itemx --rcs
@c Output @sc{rcs}-format diffs; like @option{-f} except that each command
@c specifies the number of lines affected.  @xref{RCS}.
@c 
@sc{rcs}書式の差分を出力します．@option{-f}に似ていますがそれぞれのコマ
ンドは作用する行番号を指定します．@xref{RCS}.

@item -N
@itemx --new-file
@c In directory comparison, if a file is found in only one directory,
@c treat it as present but empty in the other directory.  @xref{Comparing
@c Directories}.
@c 
ディレクトリの比較で，ファイルが一方のディレクトリだけで見つかった場合，
もう一方には空のものが存在しているかのように処理します．@xref{Comparing
Directories}.

@item --new-group-format=@var{format}
@c Use @var{format} to output a group of lines taken from just the second
@c file in if-then-else format.  @xref{Line Group Formats}.
@c 
if-then-else書式で，二番目のファイルからの行のグループを出力するために，
@var{format}を使用します．@xref{Line Group Formats}.

@item --new-line-format=@var{format}
@c Use @var{format} to output a line taken from just the second file in
@c if-then-else format.  @xref{Line Formats}.
@c 
if-then-else書式で，二番目のファイルからの行を出力するために，
@var{format}を使用します．@xref{Line Formats}.

@item --old-group-format=@var{format}
@c Use @var{format} to output a group of lines taken from just the first
@c file in if-then-else format.  @xref{Line Group Formats}.
@c 
if-then-else書式で，最初のファイルからの行のグループを出力するために，
@var{format}を使用します．@xref{Line Group Formats}.

@item --old-line-format=@var{format}
@c Use @var{format} to output a line taken from just the first file in
@c if-then-else format.  @xref{Line Formats}.
@c 
if-then-else書式で，最初のファイルからの行を出力するために，@var{format} 
を使用します．@xref{Line Formats}.

@item -p
@itemx --show-c-function
@c Show which C function each change is in.  @xref{C Function Headings}.
@c 
変更があったそれぞれのC関数を表示します．@xref{C Function Headings}.

@item -q
@itemx --brief
@c Report only whether the files differ, not the details of the
@c differences.  @xref{Brief}.
@c 
ファイルに差異があるかどうかを報告するだけで，差異を詳述しません．
@xref{Brief}.

@item -r
@itemx --recursive
@c When comparing directories, recursively compare any subdirectories
@c found.  @xref{Comparing Directories}.
@c 
ディレクトリの比較時に，見つかったすべてのサブディレクトリを再帰的に比較
します．@xref{Comparing Directories}.

@item -s
@itemx --report-identical-files
@c Report when two files are the same.  @xref{Comparing Directories}.
@c 
二つのファイルが同じとき報告します．@xref{Comparing Directories}.

@item -S @var{file}
@itemx --starting-file=@var{file}
@c When comparing directories, start with the file @var{file}.  This is
@c used for resuming an aborted comparison.  @xref{Comparing Directories}.
@c 
ディレクトリの比較時に，ファイル@var{file}から開始します．これは，中止さ
れた比較を再開するために使用します．@xref{Comparing Directories}.

@item -H
@itemx --speed-large-files
@c Use heuristics to speed handling of large files that have numerous
@c scattered small changes.  @xref{diff Performance}.
@c 
小さな変更が大量にある大きなファイルの処理を高速化するため，発見的手法を
使用します．@xref{diff Performance}.

@item --strip-trailing-cr
@c Strip any trailing carriage return at the end of an input line.
@c @xref{Binary}.
@c 
入力行の最後に後置される改行を削除します．@xref{Binary}.

@item --suppress-common-lines
@c Do not print common lines in side by side format.
@c @xref{Side by Side Format}.
@c 
横に並べた書式で，共通の行を出力しません．@xref{Side by Side Format}.

@item -t
@itemx --expand-tabs
@c Expand tabs to spaces in the output, to preserve the alignment of tabs
@c in the input files.  @xref{Tabs}.
@c 
入力ファイルのタブによる位置合わせ保持するため，出力のタブをスペースに展
開します．@xref{Tabs}.

@item -T
@itemx --initial-tab
@c Output a tab rather than a space before the text of a line in normal or
@c context format.  This causes the alignment of tabs in the line to look
@c normal.  @xref{Tabs}.
@c 
通常または周りの文を使用する書式で，行のテキストの前にスペースではなくタ
ブを出力します．これで行のタブでの位置合わせが通常通りに見えます．
@xref{Tabs}.

@item --to-file=@var{file}
@c Compare each operand to @var{file}; @var{file} may be a directory.
@c 
それぞれのオペランドを@var{file}と比較します．@var{file}はディレクトリで
もかまいません．

@item -u
@c Use the unified output format, showing three lines of context.
@c @xref{Unified Format}.
@c 
一体化した出力書式を使用し，周りの文を三行表示します．@xref{Unified
Format}.

@item --unchanged-group-format=@var{format}
@c Use @var{format} to output a group of common lines taken from both files
@c in if-then-else format.  @xref{Line Group Formats}.
@c 
if-then-else書式で，両方のファイルからの共通の行のグループを出力するため
に，@var{format}を使用します．@xref{Line Group Formats}.

@item --unchanged-line-format=@var{format}
@c Use @var{format} to output a line common to both files in if-then-else
@c format.  @xref{Line Formats}.
@c 
if-then-else書式で，両方のファイルに共通な行を出力するために，
@var{format} を使用します．@xref{Line Formats}.

@item -P
@itemx --unidirectional-new-file
@c When comparing directories, if a file appears only in the second
@c directory of the two, treat it as present but empty in the other.
@c @xref{Comparing Directories}.
@c 
ディレクトリの比較時に，二つのうち二番目のディレクトリだけにファイルがあ
る場合，もう一方には空のファイルが存在しているかのように扱います．
@xref{Comparing Directories}.

@item -U @var{lines}
@itemx --unified@r{[}=@var{lines}@r{]}
@c Use the unified output format, showing @var{lines} (an integer) lines of
@c context, or three if @var{lines} is not given.  @xref{Unified Format}.
@c For proper operation, @command{patch} typically needs at least two lines of
@c context.
@c 
周りの@var{lines}行(整数)，または@var{lines}が与えられていない場合は三行
を表示しながら一体化した出力書式を使用します．@xref{Unified Format}.  適
切に処理するため，通常@command{patch}は少なくとも二行必要です．

@c On older systems, @command{diff} supports an obsolete option
@c @option{-@var{lines}} that has effect when combined with @option{-u}.
@c @sc{posix} 1003.1-2001 (@pxref{Standards conformance}) does not allow
@c this; use @option{-U @var{lines}} instead.
@c 
古いシステムでは，@command{diff}は，時代遅れの@option{-u}と組み合わせた
とき効果がある@option{-@var{lines}}をサポートしています．@sc{posix}
1003.1-2001 (@pxref{Standards conformance})では，これを許可していません．
代わりに@option{-U @var{lines}}を使用してください．

@item -v
@itemx --version
@c Output version information and then exit.
@c 
バージョン情報を出力し終了します．

@item -w
@itemx --ignore-all-space
@c Ignore white space when comparing lines.  @xref{White Space}.
@c 
行の比較時に空白を無視します．@xref{White Space}.

@item -W @var{columns}
@itemx --width=@var{columns}
@c Output at most @var{columns} (default 130) print columns per line in
@c side by side format.  @xref{Side by Side Format}.
@c 
横に並べた書式で，行ごとに最大@var{columns}行(デフォルトは130)出力します．
@xref{Side by Side Format}.

@item -x @var{pattern}
@itemx --exclude=@var{pattern}
@c When comparing directories, ignore files and subdirectories whose basenames
@c match @var{pattern}.  @xref{Comparing Directories}.
@c 
ディレクトリの比較時に，ベース名が@var{pattern}にマッチするファイルとサ
ブディレクトリを無視します．@xref{Comparing Directories}.

@item -X @var{file}
@itemx --exclude-from=@var{file}
@c When comparing directories, ignore files and subdirectories whose basenames
@c match any pattern contained in @var{file}.  @xref{Comparing Directories}.
@c 
ディレクトリの比較時に，ベース名が@var{file}に含まれているパターンにマッ
チするファイルとサブディレクトリを無視します．@xref{Comparing
Directories}.

@item -y
@itemx --side-by-side
@c Use the side by side output format.  @xref{Side by Side Format}.
@c 
横に並べた書式を使用します．@xref{Side by Side Format}.
@end table

@node Invoking diff3
@c @chapter Invoking @command{diff3}
@chapter @command{diff3}の呼び出し
@cindex invoking @command{diff3}
@cindex @command{diff3} invocation

@c The @command{diff3} command compares three files and outputs descriptions
@c of their differences.  Its arguments are as follows:
@c 
@command{diff3}コマンドは三つのファイルを比較し，それらの差異の記述を出
力します．その引数は以下のとおりです．

@example
diff3 @var{options}@dots{} @var{mine} @var{older} @var{yours}
@end example

@c The files to compare are @var{mine}, @var{older}, and @var{yours}.
@c At most one of these three file names may be @file{-},
@c which tells @command{diff3} to read the standard input for that file.
@c 
比較するファイルは，@var{mine}，@var{older}，そして@var{yours}です．これ
らの三つのファイルの一つは@file{-}が可能で，それは@command{diff3}にファ
イルを標準入力から読み込むように伝えます．

@c An exit status of 0 means @command{diff3} was successful, 1 means some
@c conflicts were found, and 2 means trouble.
@c 
終了ステータスの0は@command{diff3}が成功したことを意味し，1は衝突が見つ
かったことを意味し，2は問題があったことを意味します．

@menu
* diff3 Options:: Summary of options to @command{diff3}.
@end menu

@node diff3 Options
@section Options to @command{diff3}
@section @command{diff3}のオプション
@cindex @command{diff3} options
@cindex options for @command{diff3}

@c Below is a summary of all of the options that @sc{gnu} @command{diff3}
@c accepts.  Multiple single letter options (unless they take an argument)
@c can be combined into a single command line argument.
@c 
以下は，@sc{gnu} @command{diff3}が受け入れるすべてのオプションの概要です．
複数の(引数を取らない)単一文字のオプションを，単一のコマンドラインの単語
に組み合わせることが可能です．

@table @option
@item -a
@itemx --text
@c Treat all files as text and compare them line-by-line, even if they
@c do not appear to be text.  @xref{Binary}.
@c 
ファイルがテキストのように見えない場合でも，すべてのファイルをテキストと
して扱い，行ごとに比較します．@xref{Binary}.

@item -A
@itemx --show-all
@c Incorporate all unmerged changes from @var{older} to @var{yours} into
@c @var{mine}, surrounding conflicts with bracket lines.
@c @xref{Marking Conflicts}.
@c 
@var{older}から@var{yours}へのマージされていないすべての変更を，衝突した
部分の周りをカッコ付の行で囲んで@var{mine}に取り込みます．@xref{Marking
Conflicts}.

@item --diff-program=@var{program}
@c Use the compatible comparison program @var{program} to compare files
@c instead of @command{diff}.
@c 
ファイルの比較で，@command{diff}の代わりにプログラム@var{program}に互換
性のある比較を使用します．

@item -e
@itemx --ed
@c Generate an @command{ed} script that incorporates all the changes from
@c @var{older} to @var{yours} into @var{mine}.  @xref{Which Changes}.
@c 
@var{older}から@var{yours}へのすべての変更を@var{mine}に取り込む
@command{ed}スクリプトを生成します．@xref{Which Changes}.

@item -E
@itemx --show-overlap
@c Like @option{-e}, except bracket lines from overlapping changes' first
@c and third files.
@c @xref{Marking Conflicts}.
@c With @option{-E}, an overlapping change looks like this:
@c 
@option{-e}に似ていますが，オーバーラップしている変更部分の最初と三番目
のファイルの行をカッコで囲みます．@xref{Marking Conflicts}.  @option{-E} 
を用いると，オーバーラップしている変更は以下のようになります．

@example
<<<<<<< @var{mine}
@r{lines from @var{mine}}
=======
@r{lines from @var{yours}}
>>>>>>> @var{yours}
@end example

@item --help
@c Output a summary of usage and then exit.
@c 
使用方法の概要を出力し終了します．

@item -i
@c Generate @samp{w} and @samp{q} commands at the end of the @command{ed}
@c script for System V compatibility.  This option must be combined with
@c one of the @option{-AeExX3} options, and may not be combined with @option{-m}.
@c @xref{Saving the Changed File}.
@c 
System V互換のため，@command{ed}スクリプトの終りに@samp{w}と@samp{q}コマ
ンドを生成します．このオプションは，@option{-AeExX3}オプションの一つと組
み合わせる必要があり，@option{-m}と組み合わせてはいけません．
@xref{Saving the Changed File}.

@item -L @var{label}
@itemx --label=@var{label}
@c Use the label @var{label} for the brackets output by the @option{-A},
@c @option{-E} and @option{-X} options.  This option may be given up to three
@c times, one for each input file.  The default labels are the names of
@c the input files.  Thus @samp{diff3 -L X -L Y -L Z -m A B C} acts like
@c @samp{diff3 -m A B C}, except that the output looks like it came from
@c files named @samp{X}, @samp{Y} and @samp{Z} rather than from files
@c named @samp{A}, @samp{B} and @samp{C}.  @xref{Marking Conflicts}.
@c 
@option{-A}，@option{-E}，そして@option{-X}オプションで出力されるカッコ
に対して，ラベル@var{label}を使用します．このオプションはそれぞれの入力
ファイルに対して一つ，三回まで与えてもかまいません．デフォルトのラベルは
入力ファイルの名前です．このため，@samp{diff3 -L X -L Y -L Z -m A B C}は
@samp{diff3 -m A B C}ように動作しますが，出力は，ファイル名@samp{A}，
@samp{B}，そして@samp{C}からではなく，ファイル名@samp{X}，@samp{Y}，そし
て@samp{Z}からのように見えます．@xref{Marking Conflicts}.

@item -m
@itemx --merge
@c Apply the edit script to the first file and send the result to standard
@c output.  Unlike piping the output from @command{diff3} to @command{ed}, this
@c works even for binary files and incomplete lines.  @option{-A} is assumed
@c if no edit script option is specified.  @xref{Bypassing ed}.
@c 
最初のファイルに編集スクリプトを適用し，結果を標準出力に送ります．
@command{diff3}の出力を@command{ed}にパイプで送るのとは異なり，これはバ
イナリファイルや不完全なファイルに対しても動作します．編集スクリプトのオ
プションが指定されていない場合，@option{-A}が仮定されます．
@xref{Bypassing ed}.

@item -T
@itemx --initial-tab
@c Output a tab rather than two spaces before the text of a line in normal format.
@c This causes the alignment of tabs in the line to look normal.  @xref{Tabs}.
@c 
通常の書式の行の前のテキストに，二つのスペースの代わりにタブを出力します．
これで，行中のタブによる位置合わせが普通になります．@xref{Tabs}.

@item -v
@itemx --version
@c Output version information and then exit.
@c 
バージョン情報を出力し終了します．

@item -x
@itemx --overlap-only
@c Like @option{-e}, except output only the overlapping changes.
@c @xref{Which Changes}.
@c 
@option{-e}に似ていますが，オーバーラップしている変更だけ出力します．
@xref{Which Changes}.

@item -X
@c Like @option{-E}, except output only the overlapping changes.
@c In other words, like @option{-x}, except bracket changes as in @option{-E}.
@c @xref{Marking Conflicts}.
@c 
@option{-E}に似ていますが，オーバーラップしている変更だけ出力します．言
い替えると，@option{-x}に似ていますが，@option{-E}のようにカッコを変更し
ます．@xref{Marking Conflicts}.

@item -3
@itemx --easy-only
@c Like @option{-e}, except output only the nonoverlapping changes.
@c @xref{Which Changes}.
@c 
@option{-e}に似ていますが，オーバーラップしていない変更だけ出力します．
@xref{Which Changes}.
@end table

@node Invoking patch
@c @chapter Invoking @command{patch}
@chapter @command{patch}の呼び出し
@cindex invoking @command{patch}
@cindex @command{patch} invocation

@c Normally @command{patch} is invoked like this:
@c 
通常@command{patch}は以下のように呼び出します．

@example
patch <@var{patchfile}
@end example

@c The full format for invoking @command{patch} is:
@c 
@command{patch}を呼び出す完全な書式は以下のとおりです．

@example
patch @var{options}@dots{} @r{[}@var{origfile} @r{[}@var{patchfile}@r{]}@r{]}
@end example

@c You can also specify where to read the patch from with the @option{-i
@c @var{patchfile}} or @option{--input=@var{patchfile}} option.
@c If you do not specify @var{patchfile}, or if @var{patchfile} is
@c @file{-}, @command{patch} reads the patch (that is, the @command{diff} output)
@c from the standard input.
@c 
読み込むパッチを@option{-i @var{patchfile}}や
@option{--input=@var{patchfile}}オプションで指定することも可能です．
@var{patchfile}を指定していない場合や，@var{patchfile}が@file{-}の場合，
@command{patch}はパッチを標準入力(すなわち@command{diff}の出力)から読み
込みます．

@c If you do not specify an input file on the command line, @command{patch}
@c tries to intuit from the @dfn{leading text} (any text in the patch
@c that comes before the @command{diff} output) which file to edit.
@c @xref{Multiple Patches}.
@c 
コマンドラインで入力ファイルを指定していない場合，@command{patch}は
@dfn{前置されるテキスト(leading text)}(@command{diff}で出力されたパッチ
内のテキスト)から編集するファイルを見つけようとします．

@c By default, @command{patch} replaces the original input file with the
@c patched version, possibly after renaming the original file into a
@c backup file (@pxref{Backup Names}, for a description of how
@c @command{patch} names backup files).  You can also specify where to
@c put the output with the @option{-o @var{file}} or
@c @option{--output=@var{file}} option; however, do not use this option
@c if @var{file} is one of the input files.
@c 
デフォルトで，@command{patch}は入力されるオリジナルファイルをパッチを当
てたバージョンに置換し，オリジナルファイルをバックアップファイルに名前を
変えます(@command{patch}がバックアップファイルを命名する方法の説明は，
@pxref{Backup Names})．@option{-o @var{file}}や
@option{--output=@var{file}}オプションで出力を書き出す場所を指定すること
も可能です．しかし，@var{file}が入力ファイルの一つの場合はこのオプション
を使用しないでください．

@menu
* patch Options::     Summary table of options to @command{patch}.
@end menu

@node patch Options
@c @section Options to @command{patch}
@section @command{patch}のオプション
@cindex @command{patch} options
@cindex options for @command{patch}

@c Here is a summary of all of the options that @sc{gnu} @command{patch}
@c accepts.  @xref{patch and Tradition}, for which of these options are
@c safe to use in older versions of @command{patch}.
@c 
以下は，@sc{gnu} @command{patch}が受け入れるすべてのオプションの概要です．
これらのオプションを@command{patch}の古いバージョンで安全に使用するため，
@xref{patch and Tradition}.

@c Multiple single-letter options that do not take an argument can be
@c combined into a single command line argument with only one dash.
@c 
複数の引数を取らない単一文字のオプションを，一つのダッシュを用いて単一の
コマンドラインに組み合わせることが可能です．

@table @option
@item -b
@itemx --backup
@c Back up the original contents of each file, even if backups would
@c normally not be made.  @xref{Backups}.
@c 
バックアップが通常作成されない場合でも，それぞれのファイルのオリジナルの
内容をバックアップします．@xref{Backups}.

@item -B @var{prefix}
@itemx --prefix=@var{prefix}
@c Prepend @var{prefix} to backup file names.  @xref{Backup Names}.
@c 
バックアップファイル名に@var{prefix}を前置します．@xref{Backup Names}.

@item --backup-if-mismatch
@c Back up the original contents of each file if the patch does not
@c exactly match the file.  This is the default behavior when not
@c conforming to @sc{posix}.  @xref{Backups}.
@c 
パッチがファイルに正確にマッチしない場合，それぞれのファイルのオリジナル
の内容をバックアップします．これは，@sc{posix}準拠でないときデフォルトの
動作です．@xref{Backups}.

@item --binary
@c Read and write all files in binary mode, except for standard output
@c and @file{/dev/tty}.  This option has no effect on
@c @sc{posix}-conforming systems like @sc{gnu}/Linux.  On systems where
@c this option makes a difference, the patch should be generated by
@c @samp{diff -a --binary}.  @xref{Binary}.
@c 
標準出力と@file{/dev/tty}以外，すべてのファイルをバイナリモードで読み書
きします．このオプションは，@sc{gnu}/Linuxのような@sc{posix}準拠のシステ
ムでは効果がありません．このオプションで差異があるシステムでは，パッチを
@samp{diff -a --binary}で生成するべきです．@xref{Binary}.

@item -c
@itemx --context
@c Interpret the patch file as a context diff.  @xref{patch Input}.
@c 
パッチファイルを周りの文を使用している差分として解釈します．@xref{patch
Input}.

@item -d @var{directory}
@itemx --directory=@var{directory}
@c Make directory @var{directory} the current directory for interpreting
@c both file names in the patch file, and file names given as arguments to
@c other options.  @xref{patch Directories}.
@c 
パッチファイルと，それ以外のオプションの引数として与えられるファイルの両
方のファイル名を解釈するため，ディレクトリ@var{directory}をカレントディ
レクトリにします．@xref{patch Directories}.

@item -D @var{name}
@itemx --ifdef=@var{name}
@c Make merged if-then-else output using @var{name}.  @xref{If-then-else}.
@c 
@var{name}を使用してif-then-elseの出力をマージします．
@xref{If-then-else}.

@item --dry-run
@c Print the results of applying the patches without actually changing
@c any files.  @xref{Dry Runs}.
@c 
実際にファイルを変更せず，パッチを適用した結果を出力します．@xref{Dry
Runs}.

@item -e
@itemx --ed
@c Interpret the patch file as an @command{ed} script.  @xref{patch Input}.
@c 
パッチファイルを@command{ed}スクリプトとして解釈します．@xref{patch
Input}.

@item -E
@itemx --remove-empty-files
@c Remove output files that are empty after the patches have been applied.
@c @xref{Creating and Removing}.
@c 
パッチを適用した後，空の出力ファイルを削除します．@xref{Creating and
Removing}.

@item -f
@itemx --force
@c Assume that the user knows exactly what he or she is doing, and do not
@c ask any questions.  @xref{patch Messages}.
@c 
ユーザが自分が行なっていることを正確に知っていると仮定し，質問してきませ
ん．@xref{patch Messages}.

@item -F @var{lines}
@itemx --fuzz=@var{lines}
@c Set the maximum fuzz factor to @var{lines}.  @xref{Inexact}.
@c 
最大のfuzz要素を@var{lines}に設定します．@xref{Inexact}.

@item -g @var{num}
@itemx --get=@var{num}
@c If @var{num} is positive, get input files from a revision control
@c system as necessary; if zero, do not get the files; if negative, ask
@c the user whether to get the files.  @xref{Revision Control}.
@c 
@var{num}が正の場合，必要があればリビジョンコントロールシステムから入力
ファイルを取得します．ゼロの場合はファイルを取得しません．負の場合，ユー
ザにファイルを取得するかどうか尋ねます．@xref{Revision Control}.

@item --help
@c Output a summary of usage and then exit.
@c 
使用方法の概要を出力し，終了します．

@item -i @var{patchfile}
@itemx --input=@var{patchfile}
@c Read the patch from @var{patchfile} rather than from standard input.
@c @xref{patch Options}.
@c 
パッチを標準入力からではなく@var{patchfile}から読み込みます．@xref{patch
Options}.

@item -l
@itemx --ignore-white-space
@c Let any sequence of blanks (spaces or tabs) in the patch file match
@c any sequence of blanks in the input file.  @xref{Changed White Space}.
@c 
パッチファイルの連続した空白(スペースとタブ)を，入力ファイルのすべての連
続した空白にマッチさせます．@xref{Changed White Space}.

@item -n
@itemx --normal
@c Interpret the patch file as a normal diff.  @xref{patch Input}.
@c 
パッチファイルを通常の差分として解釈します．@xref{patch Input}.

@item -N
@itemx --forward
@c Ignore patches that @command{patch} thinks are reversed or already applied.
@c See also @option{-R}.  @xref{Reversed Patches}.
@c 
@command{patch}がリバースパッチまたは既に適用しているものと考えられるパッ
チを無視します．@option{-R}も参照してください．@xref{Reversed Patches}.

@item --no-backup-if-mismatch
@c Do not back up the original contents of files.  This is the default
@c behavior when conforming to @sc{posix}.  @xref{Backups}.
@c 
ファイルのオリジナルの内容をバックアップしません．これは，@sc{posix}準拠
時のデフォルトの動作です．@xref{Backups}.

@item -o @var{file}
@itemx --output=@var{file}
@c Use @var{file} as the output file name.  @xref{patch Options}.
@c 
出力ファイル名として@var{file}を使用します．@xref{patch Options}.

@item -p@var{number}
@itemx --strip=@var{number}
@c Set the file name strip count to @var{number}.  @xref{patch Directories}.
@c 
ファイル名のストリップ数を@var{number}に指定します．@xref{patch
Directories}.

@item --posix
@c Conform to @sc{posix}, as if the @env{POSIXLY_CORRECT} environment
@c variable had been set.  @xref{patch and POSIX}.
@c 
@env{POSIXLY_CORRECT}環境変数が設定されているかのように，@sc{posix}に準
拠します．@xref{patch and POSIX}.

@item --quoting-style=@var{word}
@c Use style @var{word} to quote names in diagnostics, as if the
@c @env{QUOTING_STYLE} environment variable had been set to @var{word}.
@c @xref{patch Quoting Style}.
@c 
@env{QUOTING_STYLE}環境変数が@var{word}に設定されているかのように，診断
時の名前を囲む引用符を@var{word}形式にします．@xref{patch Quoting
Style}.

@item -r @var{reject-file}
@itemx --reject-file=@var{reject-file}
@c Use @var{reject-file} as the reject file name.  @xref{Reject Names}.
@c 
リジェクトファイル名として@var{reject-file}を使用します．@xref{Reject
Names}.

@item -R
@itemx --reverse
@c Assume that this patch was created with the old and new files swapped.
@c @xref{Reversed Patches}.
@c 
このパッチが古いファイルから新しいファイルに置き換えるように作成されたと
仮定します．@xref{Reversed Patches}.

@item -s
@itemx --quiet
@itemx --silent
@c Work silently unless an error occurs.  @xref{patch Messages}.
@c 
エラーが生じない限り，静かに動作します．@xref{patch Messages}.

@item -t
@itemx --batch
@c Do not ask any questions.  @xref{patch Messages}.
@c 
質問してきません．@xref{patch Messages}.

@item -T
@itemx --set-time
@c Set the modification and access times of patched files from time
@c stamps given in context diff headers, assuming that the context diff
@c headers use local time.  @xref{Patching Time Stamps}.
@c 
パッチファイルの編集時間とアクセス時間を，周りの文を使用した差分のヘッダ
がローカル時間を使用していると仮定して，周りの文を使用した差分のヘッダの
タイムスタンプに設定します．@xref{Patching Time Stamps}.

@item -u
@itemx --unified
@c Interpret the patch file as a unified diff.  @xref{patch Input}.
@c 
パッチファイルが一体化した差分だと解釈します．@xref{patch Input}.

@item -v
@itemx --version
@c Output version information and then exit.
@c 
バージョン情報を出力し，終了します．

@item -V @var{backup-style}
@itemx --version=control=@var{backup-style}
@c Select the naming convention for backup file names.  @xref{Backup Names}.
@c 
バックアップファイル名の名前の変換方法を選択します．@xref{Backup Names}.

@item --verbose
@c Print more diagnostics than usual.  @xref{patch Messages}.
@c 
通常より多くの診断メッセージを出力します．@xref{patch Messages}.

@item -x @var{number}
@itemx --debug=@var{number}
@c Set internal debugging flags.  Of interest only to @command{patch}
@c patchers.
@c 
内部デバッグフラグを設定します．@command{patch}へのパッチだけに意味があ
ります．

@item -Y @var{prefix}
@itemx --basename-prefix=@var{prefix}
@c Prepend @var{prefix} to base names of backup files.  @xref{Backup Names}.
@c 
バックアップファイルのベース名に@var{prefix}を前置します．@xref{Backup
Names}.

@item -z @var{suffix}
@itemx --suffix=@var{suffix}
@c Use @var{suffix} as the backup extension instead of @samp{.orig} or
@c @samp{~}.  @xref{Backup Names}.
@c 
バックアップの拡張子として，@samp{.orig}や@samp{~}の代わりに@var{suffix} 
を使用します．@xref{Backup Names}.

@item -Z
@itemx --set-utc
@c Set the modification and access times of patched files from time
@c stamps given in context diff headers, assuming that the context diff
@c headers use @sc{utc}.  @xref{Patching Time Stamps}.
@c 
パッチファイルの編集時間とアクセス時間を，周りの文を使用した差分のヘッダ
が@sc{utc}を使用していると仮定して，周りの文を使用した差分のヘッダのタイ
ムスタンプに設定します．@xref{Patching Time Stamps}.
@end table

@node Invoking sdiff
@c @chapter Invoking @command{sdiff}
@chapter @command{sdiff}の呼び出し
@cindex invoking @command{sdiff}
@cindex @command{sdiff} invocation

@c The @command{sdiff} command merges two files and interactively outputs the
@c results.  Its arguments are as follows:
@c 
@command{sdiff}コマンドは，二つのファイルをマージし，その結果を対話的に
出力します．その引数は以下のようになります．

@example
sdiff -o @var{outfile} @var{options}@dots{} @var{from-file} @var{to-file}
@end example

@c This merges @var{from-file} with @var{to-file}, with output to @var{outfile}.
@c If @var{from-file} is a directory and @var{to-file} is not, @command{sdiff}
@c compares the file in @var{from-file} whose file name is that of @var{to-file},
@c and vice versa.  @var{from-file} and @var{to-file} may not both be
@c directories.
@c 
これは，@var{from-file}と@var{to-file}をマージし，@var{outfile}に出力し
ます．@var{from-file}がディレクトリで@var{to-file}がそうではない場合，
@command{sdiff}は@var{from-file}内のファイル名が@var{to-file}のファイル
と比較し，逆も同じです．@var{from-file}と@var{to-file}を両方ともディレク
トリにすることはできません．

@c @command{sdiff} options begin with @samp{-}, so normally @var{from-file}
@c and @var{to-file} may not begin with @samp{-}.  However, @option{--} as an
@c argument by itself treats the remaining arguments as file names even if
@c they begin with @samp{-}.  You may not use @file{-} as an input file.
@c 
@command{sdiff}のオプションは@samp{-}で始まるので，通常は@var{from-file} 
と@var{to-file}を@samp{-}で始めてはなりません．しかし，@option{--}を引数
とすることで，それ以降の引数を@samp{-}で始まる場合でもファイル名として扱
います．@file{-}を入力ファイルとして使用してはいけません．

@c @command{sdiff} without @option{-o} (or @option{--output}) produces a
@c side-by-side difference.  This usage is obsolete; use the @option{-y}
@c or @option{--side-by-side} option of @command{diff} instead.
@c 
@option{-o}(または@option{--output})を用いない@command{sdiff}で，横に並
べた差異を生成します．この使用方法は時代遅れです．代わりに@command{diff} 
の@option{-y}や@option{--side-by-side}オプションを使用してください．

@c An exit status of 0 means no differences were found, 1 means some
@c differences were found, and 2 means trouble.
@c 
0の終了ステータスは差異が見つからなかったことを意味し，1は差異が見つかっ
たことを意味し，そして2は問題が生じたことを意味します．

@menu
* sdiff Options:: Summary of options to @command{diff}.
@end menu

@node sdiff Options
@c @section Options to @command{sdiff}
@section @command{sdiff}のオプション
@cindex @command{sdiff} options
@cindex options for @command{sdiff}

@c Below is a summary of all of the options that @sc{gnu} @command{sdiff} accepts.
@c Each option has two equivalent names, one of which is a single
@c letter preceded by @samp{-}, and the other of which is a long name
@c preceded by @samp{--}.  Multiple single letter options (unless they take
@c an argument) can be combined into a single command line argument.  Long
@c named options can be abbreviated to any unique prefix of their name.
@c 
以下は，@sc{gnu} @command{sdiff}が受け入れるオプションすべての概要です．
ぞれぞれのオプションは二つの等価な名前があり，一つは@samp{-}を前置する単
一文字で，もう一つは@samp{--}を前置する長い名前です．複数の(引数を取らな
い)単一文字のオプションを，単一のコマンドラインの単語に組み合わせること
が可能です．長い名前のオプションは，ユニークに決定できる前方部分で省略可
能です．

@table @option
@item -a
@itemx --text
@c Treat all files as text and compare them line-by-line, even if they
@c do not appear to be text.  @xref{Binary}.
@c 
すべてのファイルを，テキストのように見えない場合でもテキストとして扱い，
行単位で比較します．@xref{Binary}.

@item -b
@itemx --ignore-space-change
@c Ignore changes in amount of white space.  @xref{White Space}.
@c 
空白の量の変更を無視します．@xref{White Space}.

@item -B
@itemx --ignore-blank-lines
@c Ignore changes that just insert or delete blank lines.  @xref{Blank
@c Lines}.
@c 
空白行の挿入と削除だけの変更を無視します．@xref{Blank Lines}.

@item -d
@itemx --minimal
@c Change the algorithm to perhaps find a smaller set of changes.  This
@c makes @command{sdiff} slower (sometimes much slower).  @xref{diff
@c Performance}.
@c 
より小さな変更の組を見つけるアルゴリズムに変更します．これで
@command{sdiff}はより遅く(時には非常に遅く)なります．@xref{diff
Performance}.

@item --diff-program=@var{program}
@c Use the compatible comparison program @var{program} to compare files
@c instead of @command{diff}.
@c 
ファイルを比較するため，@command{diff}の代わりにプログラム@var{program} 
と互換性のある比較を使用します．

@item -E
@itemx --ignore-tab-expansion
@c Ignore changes due to tab expansion.
@c @xref{White Space}.
@c 
タブの展開による変更を無視します．@xref{White Space}.

@item --help
@c Output a summary of usage and then exit.
@c 
使用方法の概要を出力し終了します．

@item -i
@itemx --ignore-case
@c Ignore changes in case; consider upper- and lower-case to be the same.
@c @xref{Case Folding}.
@c 
大文字小文字の変更を無視します．大文字と小文字が同じであると考えます．
@xref{Case Folding}.

@item -I @var{regexp}
@itemx --ignore-matching-lines=@var{regexp}
@c Ignore changes that just insert or delete lines that match @var{regexp}.
@c @xref{Specified Folding}.
@c 
@var{regexp}にマッチした行の挿入や削除だけの変更を無視します．
@xref{Specified Folding}.

@item -l
@itemx --left-column
@c Print only the left column of two common lines.
@c @xref{Side by Side Format}.
@c 
二つの共通な行の左の列だけを出力します．@xref{Side by Side Format}.

@item -o @var{file}
@itemx --output=@var{file}
@c Put merged output into @var{file}.  This option is required for merging.
@c 
マージされた出力を@var{file}に書き出します．このオプションはマージで必要
です．

@item -s
@itemx --suppress-common-lines
@c Do not print common lines.  @xref{Side by Side Format}.
@c 
共通の行を出力しません．@xref{Side by Side Format}.

@item --speed-large-files
@c Use heuristics to speed handling of large files that have numerous
@c scattered small changes.  @xref{diff Performance}.
@c 
小さな変更が大量にある大きなファイルの処理を高速化するため，発見的手法を
使用します．@xref{diff Performance}.

@item --strip-trailing-cr
@c Strip any trailing carriage return at the end of an input line.
@c @xref{Binary}.
@c 
入力ファイルの終りに後置される改行を削除します．@xref{Binary}.

@item -t
@itemx --expand-tabs
@c Expand tabs to spaces in the output, to preserve the alignment of tabs
@c in the input files.  @xref{Tabs}.
@c 
入力ファイルのタブによる位置合わせを保持するため，出力のタブをスペースに
展開します．@xref{Tabs}.

@item -v
@itemx --version
@c Output version information and then exit.
@c 
バージョン情報を出力し終了します．

@item -w @var{columns}
@itemx --width=@var{columns}
@c Output at most @var{columns} (default 130) print columns per line.
@c @xref{Side by Side Format}.  Note that for historical reasons, this
@c option is @option{-W} in @command{diff}, @option{-w} in @command{sdiff}.
@c 
行ごとに最大@var{columns}列(デフォルトは130列)出力します．@xref{Side by
Side Format}.  歴史的な理由から，このオプションは@command{diff}では
@option{-W}に，@command{sdiff}では@option{-w}になっています．

@item -W
@itemx --ignore-all-space
@c Ignore white space when comparing lines.  @xref{White Space}.
@c Note that for historical reasons, this option is @option{-w} in @command{diff},
@c @option{-W} in @command{sdiff}.
@c 
行の比較で空白を無視します．@xref{White Space}.  歴史的な理由から，この
オプションは@command{diff}では@option{-w}に，@command{sdiff}では
@option{-W}になっています．
@end table

@node Standards conformance
@c @chapter Standards conformance
@chapter 標準への準拠
@cindex @sc{posix}

@vindex POSIXLY_CORRECT
@c In a few cases, the @sc{gnu} utilities' default behavior is
@c incompatible with the @sc{posix} standard.  To suppress these
@c incompatibilities, define the @env{POSIXLY_CORRECT} environment
@c variable.  Unless you are checking for @sc{posix} conformance, you
@c probably do not need to define @env{POSIXLY_CORRECT}.
@c 
状況によっては，@sc{gnu}のユーティリティの動作は@sc{posix}の標準と互換性
がありません．これらの非互換性を抑制するため，@env{POSIXLY_CORRECT}環境
変数を定義してください．@sc{posix}準拠を調査していない限り，
@env{POSIXLY_CORRECT}を定義する必要はありません．

@c Normally options and operands can appear in any order, and programs act
@c as if all the options appear before any operands.  For example,
@c @samp{diff lao tzu -C 2} acts like @samp{diff -C 2 lao tzu}, since
@c @samp{2} is an option-argument of @option{-C}.  However, if the
@c @env{POSIXLY_CORRECT} environment variable is set, options must appear
@c before operands, unless otherwise specified for a particular command.
@c 
通常，オプションとオペランドは，任意の順序にすることが可能で，プログラム
はすべてのオプションがオペランドの前にあるかのように動作します．例えば，
@samp{2}は@option{-C}のオプションの引数なので，@samp{diff lao tzu -C 2} 
は@samp{diff -C 2 lao tzu}のように動作します．しかし，
@env{POSIXLY_CORRECT}環境変数が設定されている場合，それ以外のオプション
が特定のコマンドに対して指定されていない限り，オプションはオペランドの前
にある必要があります．

@c Newer versions of @sc{posix} are occasionally incompatible with older
@c versions.  For example, older versions of @sc{posix} allowed the
@c command @samp{diff -c -10} to have the same meaning as @samp{diff -C
@c 10}, but @sc{posix} 1003.1-2001 @samp{diff} no longer allows
@c digit-string options like @option{-10}.
@c 
新しいバージョンの@sc{posix}は，古いバージョンのものと互換性が無いものも
あります．例えば，古いバージョンの@sc{posix}では@samp{diff -C 10}と同じ
意味を持つコマンド@samp{diff -c -10}が利用可能ですが，@sc{posix}
1003.1-2001の@samp{diff}では，@option{-10}のような数字列のオプションを許
可していません．

@vindex _POSIX2_VERSION
@c The @sc{gnu} utilities normally conform to the version of @sc{posix}
@c that is standard for your system.  To cause them to conform to a
@c different version of @sc{posix}, define the @env{_POSIX2_VERSION}
@c environment variable to a value of the form @var{yyyymm} specifying
@c the year and month the standard was adopted.  Two values are currently
@c supported for @env{_POSIX2_VERSION}: @samp{199209} stands for
@c @sc{posix} 1003.2-1992, and @samp{200112} stands for @sc{posix}
@c 1003.1-2001.  For example, if you are running older software that
@c assumes an older version of @sc{posix} and uses @samp{diff -c -10},
@c you can work around the compatibility problems by setting
@c @samp{_POSIX2_VERSION=199209} in your environment.
@c 
@sc{gnu}のユーティリティは通常，システム標準の@sc{posix}のバージョンに準
拠しています．異なる@sc{posix}のバージョンに準拠させるため，
@env{_POSIX2_VERSION}環境変数を適用させる標準の年月を指定する
@var{yyyymm}の形式の値に設定してください．現在，@env{_POSIX2_VERSION}に
対して二つの値がサポートされています．@samp{199209}は@sc{posix}
1003.2-1992を意味し，@samp{200112}は@sc{posix} 1003.1-2001を意味します．
例えば，古いバージョンの@sc{posix}を仮定する古いソフトウェアを実行し，
@samp{diff -c -10}を使用している場合，環境変数で
@samp{_POSIX2_VERSION=199209}を設定することで，互換性の問題を回避するこ
とが可能です．

@node Projects
@c @chapter Future Projects
@chapter 将来のプロジェクト

@c Here are some ideas for improving @sc{gnu} @command{diff} and
@c @command{patch}.  The @sc{gnu} project has identified some
@c improvements as potential programming projects for volunteers.  You
@c can also help by reporting any bugs that you find.
@c 
@sc{gnu} @command{diff}と@command{patch}を改良するための考えとして以下の
ものがあります．@sc{gnu}プロジェクトには，ボランティアのプログラミングプ
ロジェクトへの潜在能力として，いくつかの改良点を認識しました．見つけたバ
グを報告することで，我々を助けることも可能です．

@c If you are a programmer and would like to contribute something to the
@c @sc{gnu} project, please consider volunteering for one of these
@c projects.  If you are seriously contemplating work, please write to
@c @email{gnu@@gnu.org} to coordinate with other volunteers.
@c 
プロ グラマであって，@sc{gnu}プロジェクトに何か貢献したい場合，これらの
プロジェクトのボランティアになることを考えてみてください．真面目に作業を
考えている場合，他のボランティアと調整するため@email{gnu@@gnu.org}にメー
ルを送ってください．

@menu
* Shortcomings:: Suggested projects for improvements.
* Bugs::         Reporting bugs.
@end menu

@node Shortcomings
@c @section Suggested Projects for Improving @sc{gnu} @command{diff} and @command{patch}
@section @sc{gnu} @command{diff}と@command{patch}を改良するためのプロジェクトへの提案
@cindex projects for directories

@c One should be able to use @sc{gnu} @command{diff} to generate a patch from any
@c pair of directory trees, and given the patch and a copy of one such
@c tree, use @command{patch} to generate a faithful copy of the other.
@c Unfortunately, some changes to directory trees cannot be expressed using
@c current patch formats; also, @command{patch} does not handle some of the
@c existing formats.  These shortcomings motivate the following suggested
@c projects.
@c 
あらゆるのディレクトリの対からパッチを生成するため，@sc{gnu}
@command{diff}が使用できるようにし，与えられたパッチとそのようなツリーの
コピーからもう一方のコピーに忠実なものを生成するため，，@command{patch} 
を使用できるようにすべきです．残念ながら，ディレクトリツリーの変更には，
現在のパッチ書式を使用して表現することが不可能なものもあります．また，既
存の書式には@command{patch}で処理しないものもあります．これらの欠点は，
以下のプロジェクトに提案されている動機付けにもなります．

@menu
* Internationalization:: Handling multibyte and varying-width characters.
* Changing Structure::   Handling changes to the directory structure.
* Special Files::        Handling symbolic links, device special files, etc.
* Unusual File Names::   Handling file names that contain unusual characters.
* Time Stamp Order::     Outputting diffs in time stamp order.
* Ignoring Changes::     Ignoring certain changes while showing others.
* Speedups::             Improving performance.
@end menu

@node Internationalization
@c @subsection Handling Multibyte and Varying-Width Characters
@subsection マルチバイトと可変幅文字の処理
@cindex multibyte characters
@cindex varying-width characters

@c @command{diff}, @command{diff3} and @command{sdiff} treat each line of
@c input as a string of unibyte characters.  This can mishandle multibyte
@c characters in some cases.  For example, when asked to ignore spaces,
@c @command{diff} does not properly ignore a multibyte space character.
@c 
@command{diff}，@command{diff3}，そして@command{sdiff}は，入力のそれぞれ
の行を単一バイトの文字による文字列として扱います．これにより，状況によっ
てはマルチバイト文字を誤って処理するはずです．例えば，スペースを無視する
ように依頼されているとき，@command{diff}はマルチバイトのスペース文字を適
切に無視してくれません．

@c Also, @command{diff} currently assumes that each byte is one column
@c wide, and this assumption is incorrect in some locales, e.g., locales
@c that use UTF-8 encoding.  This causes problems with the @option{-y} or
@c @option{--side-by-side} option of @command{diff}.
@c 
また，@command{diff}は現在，それぞれのバイトが一列の幅だと仮定していて，
例えば，UTF-8エンコーディングを使用しているロケールのように，この仮定が
正しくないロケールもあります．これは，@command{diff}の@option{-y}や
@option{--side-by-side}オプションで問題が生じます．

@c These problems need to be fixed without unduly affecting the
@c performance of the utilities in unibyte environments.
@c 
これらの問題は，単一バイト環境でのユーティリティの性能にあまり影響しない
ように修正する必要があります．

@c The IBM GNU/Linux Technology Center Internationalization Team has
@c proposed some patches to support internationalized @command{diff}
@c @uref{http://oss.software.ibm.com/developer/opensource/linux/patches/i18n/diffutils-2.7.2-i18n-0.1.patch.gz}.
@c Unfortunately, these patches are incomplete and are to an older
@c version of @command{diff}, so more work needs to be done in this area.
@c 
IBM GNU/Linux Technology Center Internationalization Teamは，
@command{diff}の国際化をサポートするパッチ
@uref{http://oss.software.ibm.com/developer/opensource/linux/patches/i18n/diffutils-2.7.2-i18n-0.1.patch.gz} 
を提案しています．残念ながら，これらのパッチは不完全で，@command{diff}の
古いバージョンへのものなので，この領域でより多くの作業が必要です．

@node Changing Structure
@c @subsection Handling Changes to the Directory Structure
@subsection ディレクトリ構造の変更の処理
@cindex directory structure changes

@c @command{diff} and @command{patch} do not handle some changes to
@c directory structure.  For example, suppose one directory tree contains a
@c directory named @samp{D} with some subsidiary files, and another
@c contains a file with the same name @samp{D}.  @samp{diff -r} does not
@c output enough information for @command{patch} to transform the directory
@c subtree into the file.
@c 
@command{diff}と@command{patch}は，ディレクトリ構造に関する変更で処理し
ないものもあります．例えば，一つのディレクトリツリーには，補助的なファイ
ルがある@samp{D}という名前のディレクトリがあり，もう一方には同じ名前の
@samp{D}というファイルが含まれていると仮定します．@samp{diff -r}は，
@command{patch}がディレクトリのサブツリーをファイルに変換するための十分
な情報を出力しません．

@c There should be a way to specify that a file has been removed without
@c having to include its entire contents in the patch file.  There should
@c also be a way to tell @command{patch} that a file was renamed, even if
@c there is no way for @command{diff} to generate such information.
@c There should be a way to tell @command{patch} that a file's time stamp
@c has changed, even if its contents have not changed.
@c 
パッチファイルに完全な内容を含める必要がないように，削除されたファイルを
指定する方法があるべきです．@command{diff}がそのような情報を生成する方法
がない場合でも，ファイル名が変更されたことを@command{patch}に伝える方法
もあるべきです．ファイルの内容が変更されていない場合でも，ファイルのタイ
ムスタンプを変更するように@command{patch}に伝える方法があるべきです．

@c These problems can be fixed by extending the @command{diff} output format
@c to represent changes in directory structure, and extending @command{patch}
@c to understand these extensions.
@c 
これらの問題は，ディレクトリ構造の変更を表現する@command{diff}の出力書式
を拡張し，これらの拡張を理解するよう@command{patch}を拡張することで修正
可能です．

@node Special Files
@c @subsection Files that are Neither Directories Nor Regular Files
@subsection ディレクトリでも通常のファイルでもないファイル
@cindex special files

@c Some files are neither directories nor regular files: they are unusual
@c files like symbolic links, device special files, named pipes, and
@c sockets.  Currently, @command{diff} treats symbolic links like regular files;
@c it treats other special files like regular files if they are specified
@c at the top level, but simply reports their presence when comparing
@c directories.  This means that @command{patch} cannot represent changes
@c to such files.  For example, if you change which file a symbolic link
@c points to, @command{diff} outputs the difference between the two files,
@c instead of the change to the symbolic link.
@c 
ファイルには，ディレクトリでも通常のファイルでもないものもあります．それ
らはシンボリックリンク，デバイスの特殊ファイル，名前付パイプ，そしてソケッ
トのような通常ではないファイルです．現在，@command{diff} はシンボリック
リンクを通常のファイルのように扱います．それ以外のファイルは，トップレベ
ルで指定されている場合は通常のファイルのように扱いますが，ディレクトリを
比較しているときは存在していることを単純に報告するだけです．例えば，シン
ボリックリンクが示しているファイルを変更している場合，@command{diff}はシ
ンボリックリンクの変更ではなく，二つのファイルの間の差異を出力します．

@c This might not be a good idea; is it wise for root to install devices
@c this way?
@c
@c @command{diff} should optionally report changes to special files specially,
@c and @command{patch} should be extended to understand these extensions.
@c 
@command{diff}は，オプションで特別に特殊ファイルの変更を報告するべきで，
@command{patch}はこれらの拡張を理解するように拡張すべきです．

@node Unusual File Names
@c @subsection File Names that Contain Unusual Characters
@subsection 通常ではない文字を含むファイル名
@cindex file names with unusual characters

@c When a file name contains an unusual character like a newline or
@c white space, @samp{diff -r} generates a patch that @command{patch} cannot
@c parse.  The problem is with format of @command{diff} output, not just with
@c @command{patch}, because with odd enough file names one can cause
@c @command{diff} to generate a patch that is syntactically correct but
@c patches the wrong files.  The format of @command{diff} output should be
@c extended to handle all possible file names.
@c 
ファイル名に改行や空白のような通常ではない文字が含まれるとき，@samp{diff
-r}は，@command{patch}が解析不可能なパッチを生成します．@command{diff}の
出力書式でのその問題は@command{patch}だけではなく，それは奇妙な完全なファ
イル名で，@command{diff}は構文的には正しいが間違ったファイルにパッチを当
てるパッチを生成します．@command{diff}の出力の書式は，可能性のあるすべて
のファイル名を処理するよう拡張されるべきです．

@node Time Stamp Order
@c @subsection Outputting Diffs in Time Stamp Order
@subsection タイムスタンプの順に差分を出力する

@c Applying @command{patch} to a multiple-file diff can result in files
@c whose time stamps are out of order.  @sc{gnu} @command{patch} has
@c options to restore the time stamps of the updated files
@c (@pxref{Patching Time Stamps}), but sometimes it is useful to generate
@c a patch that works even if the recipient does not have @sc{gnu} patch,
@c or does not use these options.  One way to do this would be to
@c implement a @command{diff} option to output diffs in time stamp order.
@c 
複数ファイルの差分を@command{patch}で適用する結果としてファイルのタイム
スタンプの順番が台無しになるはずです．@sc{gnu} @command{patch}には，更新
されたファイルのタイムスタンプを維持するオプションがありますが
(@pxref{Patching Time Stamps})，@sc{gnu} @command{patch}がなかったりこれ
らのオプションを使用しない局面でも動作するパッチを生成することが役に立つ
こともあります．こうするための一つの方法は，出力する差分をタイムスタンプ
の順番にする@command{diff}のオプションを実装することです．

@node Ignoring Changes
@c @subsection Ignoring Certain Changes
@subsection 特定の変更を無視する

@c It would be nice to have a feature for specifying two strings, one in
@c @var{from-file} and one in @var{to-file}, which should be considered to
@c match.  Thus, if the two strings are @samp{foo} and @samp{bar}, then if
@c two lines differ only in that @samp{foo} in file 1 corresponds to
@c @samp{bar} in file 2, the lines are treated as identical.
@c 
@var{from-file}と@var{to-file}でマッチしていると考えられる二つの文字列を
指定する機能があれば素晴らしいでしょう．例えば，二つの文字列が@samp{foo} 
と@samp{bar}で，二つの行がファイル1では@samp{foo}でファイル2の対応する部
分が@samp{bar}の場合，その行が同じものとして処理されるということです．

@c It is not clear how general this feature can or should be, or
@c what syntax should be used for it.
@c 
この機能を一般化させる方法や，そこで使用するべき構文は明確ではありません．

@c A partial substitute is to filter one or both files before comparing,
@c e.g.:
@c 
部分的な置換は，比較する前に一つまたは両方のファイルでフィルタを通すこと
です．例えば以下のようにします．

@example
sed 's/foo/bar/g' file1 | diff - file2
@end example

@c However, this outputs the filtered text, not the original.
@c 
しかし，この出力はフィルタを通したテキストでオリジナルのものではありませ
ん．

@node Speedups
@c @subsection Improving Performance
@subsection パフォーマンスの改善

@c When comparing two large directory structures, one of which was
@c originally copied from the other with time stamps preserved (e.g.,
@c with @samp{cp -pR}), it would greatly improve performance if an option
@c told @command{diff} to assume that two files with the same size and
@c time stamps have the same content.  @xref{diff Performance}.
@c 
二つの大きなディレクトリ構造を比較しているとき，元々は一方がもう一方から
(例えば，@samp{cp -pR}を用いて) タイムスタンプを維持したままコピーされて
いれば，サイズが同じでタイムスタンプが同じ二つのファイルの内容は同じだと
いう仮定を@command{diff}に伝えるオプションがある場合，パフォーマンスが大
幅に改善されることでしょう．@xref{diff Performance}.

@node Bugs
@c @section Reporting Bugs
@section バグの報告
@cindex bug reports
@cindex reporting bugs

@c If you think you have found a bug in @sc{gnu} @command{cmp},
@c @command{diff}, @command{diff3}, or @command{sdiff}, please report it
@c by electronic mail to the
@c @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-utils,GNU utilities
@c bug report mailing list} @email{bug-gnu-utils@@gnu.org}.  Please send
@c bug reports for @sc{gnu} @command{patch} to
@c @email{bug-patch@@gnu.org}.  Send as precise a description of the
@c problem as you can, including the output of the @option{--version}
@c option and sample input files that produce the bug, if applicable.  If
@c you have a nontrivial fix for the bug, please send it as well.  If you
@c have a patch, please send it too.  It may simplify the maintainer's
@c job if the patch is relative to a recent test release, which you can
@c find in the directory @uref{ftp://alpha.gnu.org/gnu/diffutils/}.
@c 
@sc{gnu} @command{cmp}，@command{diff}，@command{diff3}，または
@command{sdiff}にバグを見つけたと思う場合，
@uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-utils,GNU utilities
bug report mailing list} @email{bug-gnu-utils@@gnu.org}に電子メールで報
告してください．@sc{gnu} @command{patch}のバグの報告は
@email{bug-patch@@gnu.org}に送ってください．できるだけ問題を明確にし，
@option{--version}オプションの出力と，できればバグを生成する入力ファイル
のサンプルを含めて送ってください．些細ではないバグを修正した場合，それも
送ってください．パッチがあればそれも送ってください．パッチがディレクトリ
@uref{ftp://alpha.gnu.org/gnu/diffutils/}で見つけられる最新のテストリリー
スに関連する場合，管理者の作業が簡単になるかもしれません．

@node Copying This Manual
@c @appendix Copying This Manual
@appendix このマニュアルのコピーに付いて

@menu
* GNU Free Documentation License::  License for copying this manual.
@end menu

@include fdl.texi

@node Index
@c @appendix Index
@appendix 索引

@printindex cp

@bye
