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 は、ディレクトリ階層であっても かまいませんし、単一ファイルであってもかまいません。 |
比較結果として、違いが無かった場合は 0 を、違いが発見された 場 合 は 1 を、何かエラーがおきた場合は 2 を返します。 |