日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、全翻訳済み)
6.4-STABLE-K, 7.2-STABLE-K, 8.0-STABLE-K は現在、 作成中で日々更新されています。 最新の snapshots を元に作成しています。
DIFF(1) GNU Tools DIFF(1)
名称
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_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 を返します。
GNU Tools 22sep1993 DIFF(1)