diffが比較している二つのファイルのうちの一方がバイナリ(テキス トファイルではない)と考える場合,通常ファイルの組を概要の出力書式が選択 されているように(see Brief)扱い,バイナリファイルが異なっていること だけを報告します.これは,行単位での比較がバイナリファイルに対して普通は 意味が無いためです.
ファイルの最初の数バイトを調査して,diffはファイルがテキストか バイナリかを決定します.正確なバイト数はシステムに依存しますが,それは通 常数千になります.ファイルの一部のすべてのバイトが‘null’ではない場 合,diffはファイルがテキストだと考えます.それ以外の場合は,ファ イルがバイナリだと考えます.
ファイルがテキストファイルだとdiffに強制的に考えさせたいときも あるでしょう.例えば,‘null’文字が含まれているテキストファイルを比 較する可能性があります.diffは誤って,これらをテキストファイル ではないと決定するでしょう.また,‘null’文字を特殊なフォーマットを 示すために使用するワープロシステムで使用されているフォーマットのファイル を比較する可能性もあります.-aや--textオプションを使用 することで,diffに強制的にすべてのファイルがテキストファイルで あると考えさせ,行ごとにそれらを比較させることが可能です.このオプション を使用して比較しているファイルが,実際にはテキストを含んでいない場合,お そらくファイルには数個の改行文字しかなく,diffの出力は,ファイ ルに含まれているすべての文字からなる長い行の差異を表示するhunkになるでしょ う.
すべてのファイルをバイナリファイルだとdiffに強制的に考えさせ, ファイルが(どのように異なっているかではなく)異なっているかどうかのみを報 告させることも可能です.このために-qや--briefオプショ ンを使用してください.
バイナリファイルの差は,diffの出力結果がすべての差を取り切れな いので,問題が生じると考えられます.この問題で,diffはステータ ス2で終了します.しかし,この問題は--aや--textオプショ ンを用いたり,-qや--briefオプションを用いることで発生 しないので,これらどちらのオプションでも,diffはバイナリファイ ルをテキストファイルのように扱います.
テキストファイルとバイナリファイルで差があるオペレーティングシステムでは, diffは通常,すべてのデータをテキストとして読み書きします.代わ りにバイナリデータとしてdiffに読み書きさせるために, --binaryオプションを使用してください.このオプションは, gnuや伝統的なUnixシステムのようなposix-準拠のシステムでは効果 がありません.しかし,多くのパーソナルコンピュータのオペレーティングシス テムでは,行末の改行の後にキャリッジリターンが存在します.そのようなシス テムでは,diffは通常入力されるこれらのキャリッジリターンを無視 し,それぞれの出力の行末にキャリッジリターンを生成しますが, --binaryオプションを用いるとdiffはそれぞれのキャリッ ジリターンをそのまま入力文字として扱い,それぞれの出力の行末にキャリッジ リターンを生成しません.posix-準拠のシステムで変換する予定のテキス トではないファイルを扱うとき,これは役に立つはずです.
--strip-trailing-crで,diffは行末の改行にキャリッジリ ターンが続いている入力行を普通の改行として扱います.多くのパーソナルコン ピュータのオペレーティングシステムからインポートされた不完全なテキストを 比較するとき,これは役に立つはずです.このオプションは行が読み込まれる方 法に影響があり,それは順次,比較される方法と出力の方法に影響していきます.
二つのファイルをバイト単位で比較したい場合,二つのファイルのバイトごとの 差の値を表示するために,-lオプションを用いてcmpプログ ラムを使用することが可能です.gnu cmpを用いると,これらの バイトのascii表現を表示するために-bオプションを使用するこ とも可能です.詳細はSee Invoking cmp.
比較しているファイルのいずれかをdiff3がバイナリ(テキストではな いファイル)と考える場合,そのような比較は普通意味が無いので,通常はエラー を報告します.diff3は,ファイルがバイナリかどうかを diffが決定するテストと同じテストを使用します.diffを 用いるときと同様に,入力ファイルにテキストでないバイトが含まれているが, それ以外はテキストファイルに似ている場合,-aや--textオ プションを使用することで,diff3にすべてのファイルをテキストファ イルと考えさせ,行単位での比較を強制させることが可能です.