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
473 lines
9.9 KiB
Groff
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 を返します。
|