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