doc/documentation/manual-pages/ja/man1/diff.1
Sergio Carlavilla Delgado 989d921f5d Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
2021-01-26 00:31:29 +01:00

473 lines
9.9 KiB
Groff

.\" %FreeBSD: src/gnu/usr.bin/diff/diff.1,v 1.9 2004/02/01 13:52:19 ceri Exp %
.\" $FreeBSD$
.TH DIFF 1 "22sep1993" "GNU Tools" "GNU Tools"
.SH 名称
diff \- 2 つのテキストファイルの間の差を求める
.SH 書式
.B diff
[options] from-file to-file
.SH 解説
.I diff
の最も単純な使用方法は、
.I from-file
.I to-file
の 2 つのファイルを指定することです。
この場合、
.I diff
は、その 2 つのファイルの内容を比較します。ファイル名
として、`-' を指定した場合は、標準入力から読み込みを行ないます。
特殊な場合として、
.B "diff \- \-"
は標準入力をそれ自身と比較します。
.PP
もし、
.I from-file
としてディレクトリを指定し
.I to-file
がディレクトリでなかった場合、
.I diff
.I to-file
で指定したファイル名と同じ名前のファイルを
.I from-file
のディレクトリから捜して、そのファイルとの間で比較を行ないます。
その逆に、
.I to-file
がディレクトリで
.I from-file
がディレクトリでない場合も、同様に処理します。なお、
ディレクトリでない方のファイルに `-' を指定することはできません。
.PP
.I from_file
.I to_file
の両方がディレクトリだった場合、
.I diff
は、両方のディレクトリ内でファイル名が同じファイル同士をアルファベット順に
比較していきます。この時、
.B \-r
もしくは、
.B \-\-recursive
オプションが指定されていれば、
サブディレクトリの中のファイルも再帰的に比較していきます。
.I diff
は、ディレクトリの実際の中身をファイルのように比較しません。標準入力は名前
が無く``同じ名前を持ったファイル''の概念が適用できないので、
完全指定したファイルは標準入力であってはなりません。
.PP
.B diff
のオプションは
.BR \-
で始まります。よって通常
.I from_file
.I to_file
.BR \-
で始まりません。しかしながらそれ自体が引数である
.B \-\-
の後では、 残された引数が
.BR \-
で始まっていてもファイル名として扱います。
.SS オプション
GNU
.I diff
のすべてのオプションの要約は以下の通りです。ほとんどのオプション
は 2 つの同等な名前を持ちます。1 つは
.BR \-
で始まる 1 文字の名前で、もう 1 つは、
.BR \-\-
で始まる長い名前です。複数の 1 文字のオプション (引数を持たない場合) は、
1 つの文字列にまとめてしまって構いません。つまり
.B \-ac
.B "\-a \-c"
と同等です。長い名前のオプションはその名前の接頭辞が一意的に決まればどんな
省略でもできます。鍵括弧
.RB ( [
.BR ] )
は、オプションが省略可能な引数を持つことを示します。
.PP
.TP
.BI \- lines
.B \-c
.B \-u
と組み合わせて、相違点の前後 (context) の表示行数を `数字'
で指定します。このオプションだけでは、出力フォーマットは変化しません。
このオプションは旧式 (obsolete) です。
.I patch
をうまく働かせるためには、少なくとも前後 2 行ずつは必要です。
.TP
.\" 以下では、同等な 1 文字オプションと長い単語のオプションが
.\" まとめて表示されるようにアレンジされ直されている。
.B \-a
.br
.ns
.TP
.B \-\-text
テキストファイルでないようなものについても、全てのファイルを
テキストとみなして、1 行づつ比較していきます。
.TP
.B \-b
.br
.ns
.TP
.B \-\-ignore\-space\-change
空白の数の違いを無視します。
.TP
.B \-B
.br
.ns
.TP
.B \-\-ignore\-blank\-lines
空行が入っているもしくは足りないなどの違いは無視します。
.TP
.B \-\-brief
.br
.ns
.TP
.B \-q
ファイルの違いの詳細は表示せず、違っているかどうかだけを報告します。
.TP
.B \-c
``context output format'' を使用します。
.\" これは、patch コマンドに
.\" 適した形式で、違っている行だけでなく、その前後も数行出力する形式で
.\" す。デフォルトでは 3 行づつ表示します。行数を変えるには、`-行数'オ
.\" プションを使うか、次のオプションを使用します。
.TP
.BI "\-C " 行数
.br
.ns
.TP
.BI \-\-context[= 行数 ]
``context output format'' を使用します。不一致の行の前後に、`行数'
で指定した行数だけ表示します (context)。
.I patch
をうまく働かせるためには、少なくとも 2 行の context が必要です。
.TP
.BI \-\-changed\-group\-format= format
if-then-else 形式の両方のファイルから異なった行を含む部分を出力する
ために
.I format
を使用します。
.I format
文字列に指定可能なものの詳細は、
.I diff
の info 文書を参照してください。
.TP
.B \-d
.br
.ns
.TP
.BI \-\-minimal
より小さな差分を見つけるアルゴリズムに変更します。このオプションを
指定すると
.I diff
の処理速度は遅くなります (かなり遅くなることもあります)。
.TP
.BI "\-D " name
.br
.ns
.TP
.BI \-\-ifdef= name
プリプロセッサマクロ
.I name
の条件記述を用いた if-then-else 形式にマージして出力します。
.TP
.B -e
.br
.ns
.TP
.B \-\-ed
.I ed
のスクリプトの形式で出力します。
.TP
.BI \-\-exclude= pattern
.br
.ns
.TP
.BI "\-x " pattern
ディレクトリ単位の比較の時、ファイルやディレクトリ名が
.I pattern
にマッチした場合は、比較しないようにします。
.TP
.BI \-\-exclude\-from= file
.br
.ns
.TP
.BI "\-X " file
ディレクトリ単位の比較の時、ファイルやディレクトリ名が
.I file
の中に含まれるパターンにマッチした場合は、比較しないようにします。
.TP
.B \-\-expand\-tabs
.br
.ns
.TP
.B \-t
入力ファイルのタブによる位置調整をくずさないよう、タブを空白に展開します。
.TP
.B \-f
.br
.ns
.TP
.B \-\-forward\-ed
.B ed
のスクリプトと一見同じような出力をします。ただし、ファイルに
現われる順序が違います。
.TP
.BI "\-F " regexp
.br
.ns
.TP
.BI \-\-show\-function\-line= regexp
context diff 形式および unified diff 形式において、差分のブロック毎に、
差分のブロックに先行し、かつ
.I regexp
にマッチする行のうちでもっともブロックに近い行を出力します。
.TP
.B \-h
なにも機能はありません。通常の UNIX の diff との互換のためにあります。
.TP
.B \-H
.br
.ns
.TP
.B \-\-speed\-large\-files
小さな違いがあちこちにあるような大きなファイルの処理を
高速化するヒューリスティックを用います。
.TP
.BI \-\-horizon\-lines= lines
2 つのファイルの先頭と末尾における共通部分のうち
.I lines
行を残したままで差分を検索します
.\" (通常は先頭と末尾の共通部分を削除してから検索を行います)。
.TP
.B \-i
.br
.ns
.TP
.B \-\-ignore\-case
英大文字と小文字の違いを無視します。
.TP
.BI "\-I " regexp
.br
.ns
.TP
.BI \-\-ignore\-matching\-lines= regexp
正規表現
.I regexp
にマッチした行が追加あるいは削除されていても無視します。
.TP
.B \-\-initial\-tab
.br
.ns
.TP
.B \-T
通常形式および context diff 形式において、テキスト先頭に空白文字ではなく
タブを入れます。行に含まれるタブが元と同じような形で見えます。
.TP
.B \-l
.br
.ns
.TP
.B \-\-paginate
出力を
.I pr
に通してページ付けを行ないます。
.TP
.BI "\-L " label
.br
.ns
.TP
.BI \-\-label= label
context diff 形式および unified diff 形式において、
出力に付加されるファイル名の代わりに、
.I label
で指定したラベルを使用します。
.TP
.BI \-\-left\-column
2 段組形式において、2 つの共通の行の左の欄だけを表示します。
.TP
.BI \-\-line\-format= format
.I format
を用いて、すべての入力行を
if-then-else 形式で出力します。
.TP
.B \-n
.br
.ns
.TP
.B \-\-rcs
RCS形式の差分を出力します。
.B \-f
と似ていますが、各コマンドには適用した行数がついた形となります。
.TP
.B \-N
.br
.ns
.TP
.B \-\-new\-file
ディレクトリ単位の比較の時に、片方のディレクトリにだけ存在するファイルに
関しては、他のディレクトリでは空のファイルがあるものとして扱います。
.TP
.BI \-\-new\-group\-format= format
2 番目のファイルにだけ存在する部分をif-then-else 形式で出力するために
.I format
を使います。
.TP
.BI \-\-new\-line\-format= format
if-then-else 形式で 2 番目のファイルにだけ存在する行を出力するために使う
.I format
.TP
.B \-o
古い伝統的な出力フォーマットを使う
.TP
.BI \-\-old\-group\-format= format
if-then-else 形式で 1 番目のファイルにだけ存在する部分を出力するために使う
.I format
.TP
.BI \-\-old\-line\-format= format ####
if-then-else 形式で 1 番目のファイルにだけ存在する行を出力するために使う
.I format
.TP
.B \-p
各変更が含まれる C の関数を表示します。
.TP
.B \-P
.br
.ns
.TP
.B \-\-unidirectional\-new\-file
ディレクトリの比較において、2 番目のディレクトリにしか存在しないファイル
があれば、1 番目のディレクトリにもサイズ 0 のファイルがあるとみなします。
.TP
.B \-r
.br
.ns
.TP
.B \-\-recursive
ディレクトリ単位の比較の時に、サブディレクトリがあれば、その配下も再帰的に
検索して比較を行ないます。
.TP
.B \-\-report\-identical\-files
.br
.ns
.TP
.B \-s
ファイルの内容が同じだった時に、その旨を報告します。
.TP
.BI "\-S " file
.br
.ns
.TP
.BI \-\-starting\-file= file
ディレクトリ単位の比較の時に、
.I file
で指定したファイル名から実行します。これは、一連の比較作業を中断した後に
途中から再開するのに便利です。
.TP
.B \-\-sdiff\-merge\-assist
.I sdiff
作業の手助けになる補足の情報を表示します。普通、
.I sdiff
.I diff
を実行する際にはこのオプションを付けるので、
ユーザが直接このオプションを使うことはありません。
.TP
.B \-\-show\-c\-function
C のプログラムを認識して、どの関数で変更があったかを表示します。
.TP
.B \-\-side\-by\-side
.br
.ns
.TP
.B \-y
比較する 2 つのファイルの内容を、横に並べて表示します (side-by-side 形式)。
.TP
.B \-\-suppress\-common\-lines
side-by-side 形式の表示で、同じ内容の行は表示しないようにします。
.TP
.B \-u
unified diff 形式を用います。
.TP
.BI \-\-unchanged\-group\-format= format
if-then-else 形式で変更がなかった部分を出力するために使う
.I format
.TP
.BI \-\-unchanged\-line\-format= format
if-then-else 形式で変更がなかった行を出力するために使う
.I format
.TP
.BI "\-U " 行数
.br
.ns
.TP
.BI \-\-unified[= 行数 ]
unified diff 形式にします。不一致の行の前後に、`行数' で
指定した行数のマッチした行も表示します。`行数' を省略した場合は
3 行になります。
patch をうまく働かせるためには、少なくとも前後 2 行は必要です。
.TP
.B \-v
.br
.ns
.TP
.B \-\-version
.I diff
のバージョンを表示します。
.TP
.B \-w
.br
.ns
.TP
.B \-\-ignore\-all\-space
比較時に、水平方向の空白は無視するようにします。
.TP
.BI "\-W " columns
.br
.ns
.TP
.BI \-\-width= columns
side-by-side 形式の表示で、1 行の幅を
.I columns
で指定した文字数にします。
.SH 戻り値
ファイルが同一の場合、
.I diff
は 0 を返し、異なる場合 1 を返します。
ファイルのいずれか一方 (あるいは両方とも) オープンできない場合、
戻り値に 2 が設定されます。
.SH 環境変数
環境変数
.B DIFF_OPTIONS
.I diff
のデフォルトオプションの組を保持可能です。
これらのオプションは最初に解釈され、
明示的なコマンド行パラメータにより上書きされます。
.SH 使用例
ローカルソースツリーに対して行った変更 (新規ファイルを含み得る)
をファイルに保存し、(おそらく
.B send-pr(1)
プログラムを使用して) 他人に見せられるようにするには、
.sp
diff -crN foo.orig foo >foo.diff
.sp
と打ち込みます。
ここで、
.I foo.orig
.I foo
は、ディレクトリ階層であってもかまいませんし、
単一ファイルであってもかまいません。
.SH 関連項目
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1)
.SH 戻り値
比較結果として、違いが無かった場合は 0 を、違いが発見された場合は 1 を、
何かエラーがおきた場合は 2 を返します。