DIFF(1)

名称
diff - 2 つのテキストファイルの間の差を求める

書式
diff [options] from-file to-file

解説
diff の最も単純な使用方法は、 from-file と to-file の 2 つのファイルを指定することです。 この場合、diffは、その 2 つのファイルの内容を比較します。ファイル 名として、`-' を指定した場合は、標準入力が読み込みを行います。

もし、 from-file としてディレクトリを指定し、 to-file がディレクトリでなかった場合、 diff は、 to-file で指定したファイル名と同じ名前のファイルを from-file のディレクトリから捜して、そのファイルとの間で比較を行います。 その逆に、 to-file がディレクトリで from-file がディレクトリでない場合も、同様に処理します。なお、 ディレクトリでない方のファイルに、`-' を指定することはできません。

from_file と to_file の両方がディレクトリだった場合、 diff は、両方のディレクトリでアルファベット順にファイル名が同じファイル同士を 比較していき ます。この時、 -r もしくは、 --recursive オプションが指定されていれば、 サブディレクトリの中のファイルも再帰的に比較していきます。

  オプション
GNU diff の主なオプションは以下の通りです。他にも多くのオプションがあります。

なお、 -- だけの指定はオプションの終了を意味し、以降は from-file および to-file の指定になるものとみなします。この方法を使えば、`-' で始ま るようなファイル名など、 diff がオプションの指定と誤って解釈してしまうような場合に有効です。

-lines
    -c か -u と組み合わせて、ファイルの中身を表示する行数を `数字' で指定します。このオプションだけでは、出力フォーマットは変化しません。

--text

-a  テキストファイルでないようなものについても、全てのファイルをテ キストとみなして、1 行ずつ比較していきます。

-b

--ignore-space-change
    空白の数の違いを無視します。

-B  空行が入っているもしくは足りないなどの違いは無視します。

-q

--brief
    ファイルの違いの詳細は表示せず、違っているかどうかだけを報告します。

-c  ``context output format'' を使用します。これは、patch コマンドに 適したフォーマットで、違っている行だけでなく、その前後も数行出 力するフォーマットです。デフォルトでは 3 行ずつ表示します。行数 を変えるには、`-行数'オプションを使うか、次のオプションを使用 します。

-C 行数

--context[=行数]
    ``context output format'' を使用します。不一致の行の前後に、`行数' で指定した行数の一致した行も表示します。patchをうまく働かせるために は、少なくとも、2 行は必要です。

-d  アルゴリズムを、小さな違いも見つけるものに変更します。このオプションを 指定するとdiffは遅くなります。

-D name
    if-then-else でマージした出力を作成し、プリプロセッサマクロの条件を name にします。

-e

--ed
    ed のスクリプトの形式で出力します。

--exclude=pattern
    ディレクトリ単位の比較の時、 pattern にマッチする名前のファイルやサブディレクトリは無視するようにします。

--exclude-from=file
    ディレクトリ単位の比較の時、 file で指定したファイルに含まれているパターンにマッチする名前のファイルや サブディレクトリは無視するようにします。

--expand-tabs
    出力時に、タブをスペースに変換します。

-f

--forward-ed
    ed のスクリプトと一見同じような出力をします。ただし、ファイルに 現われる順序が違いますので、 ed では使えません。

-F regexp
    コンテキストおよびユニファイド形式の差分において、差分のブロック毎に、 差分のブロックに先行し、かつregexpにマッチする行のうちでもっともブロッ クに近い行を出力します。

-h  なにも機能はありません。通常の UNIX の diff との互換のためにあります。

--speed-large-files

-H  大きなファイルで、小さな違いがあちこちにあるような物を扱う時に、 高速になることもあります。

--horizon-lines=lines
    2つのファイルの先頭と末尾における共通部分のうち lines行を残したままで差分を検索します(通常は先頭と末尾の共通部分を削除 してから検索を行います)。

-i  英大文字と小文字の違いを無視します。

-I regexp
    正規表現 regexp にマッチした行は、比較対象から外します。

--ifdef=name
    2つのファイルの差分を#ifdef nameで囲んだ形式で出力します。

-T

--initial-tab
    diff は、追加や削除などの意味の記号を行頭に付けるため、そ のままだとファイル中のタブ位置がずれて見にくくなるため、ファイ ルの中身を出力する前にタブをつけます。

-l  出力を pr に通してページ付けを行います。

-L label

--label=label
    出力に付加されるファイル名の代わりに、 label で指定したラベルを使用します。

-n

--rcs
    RCSフォーマットの差分を出力します。 -f と似ていますが、各コマンドと、適用した行数がついた形となります。

-N

--new-file
    ディレクトリ単位の比較の時に、片方のディレクトリにだけ存在するファイルに 関しては、他のディレクトリでは空のファイルがあるものとして扱います。

--show-c-function

-p  C のプログラムを認識して、どの関数で変更があったかを表示します。

-P  ディレクトリ単位の比較の時に、2 番目のディレクトリにだけ存在するファイルに 関しては、他のディレクトリでは空のファイルがあるものとして扱います。

--paginate
    出力を pr に通してページ付けを行います。

-r

--recursive
    ディレクトリ単位の比較の時に、サブディレクトリがあれば、その配下も再帰的に 検索して比較を行います。

--report-identical-files

-s  ファイルの内容が同じだった時に、その旨を報告します。

-S file

--starting-file=file
    ディレクトリ単位の比較の時に、file で指定したファイル名から実行します。 これは、一連の比較作業を中断した後に途中から再開するのに便利です。

--sdiff-merge-assist
    sdiff 作業の手助けになる補足の情報を表示します。普通、sdiff が、diff に、 このオプションを付けて実行するので、ユーザが直接このオプションを 使うことはありません。

--show-function-line=regexp
    コンテキストおよびユニファイド形式の差分において、差分のブロック毎に、 差分のブロックに先行し、かつregexpにマッチする行のうちでもっともブロッ クに近い行を出力します。

-y

--side-by-side
    比較する 2 つのファイルの内容を、横に並べて表示します。

--suppress-common-lines
    side-by-side 形式の表示で、同じ内容の行は表示しないようにします。

-W columns

--width=columns
    side-by-side 形式の表示で、1 行の幅を columns で指定した文字数にします。

-t  入力ファイルの中のタブ位置に合うように、タブを空白に展開します。

-u  ``unified output format'' にします。

--unchanged-group-format=format
    変更がなかった部分の出力形式を指定します。

--unchanged-line-format=format
    変更がなかった行の出力形式を指定します。

--unidirectional-new-file
    ディレクトリの比較において、2番目のディレクトリにしか存在しないファイ ルがあれば、その内容を差分に書き出します。-N オプションとは異なり、1番 目のディレクトリにしか存在しないファイルの内容は出力しません。

-U 行数

--unified[=行数]
    ``unified output format''にします。不一致の行の前後に、`数字'で 指定した行数の一致した行も表示します。patchをうまく働かせるために は、少なくとも、2 行は必要です。

-v

--version
    本プログラムのバージョンを表示します。

-w

--ignore-all-space
    比較時に、空白は無視するようにします。

-x pattern
    ディレクトリ単位の比較の時、ファイルやディレクトリ名 がpattern にマッチした場合は、比較しないようにします。

-X file
    ディレクトリ単位の比較の時、ファイルやディレクトリ名が file の中に含まれる pattern にマッチした場合は、比較しないようにします。

関連項目
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1)

戻り値
比較結果として、違いが無かった場合は 0 を、違いが発見された場合は 1 を、 何かエラーがおきた場合は 2 を返します。