各ユーザが別々に同一のファイルをコピーし、そのコピーを編集するという場合があります。その場合 diff コマンドを使うと、バージョンの異なるファイルについて相違点を検出することができます。次のコマンドは、leftfile と rightfile の各行を走査して相違点を表示します。
$ diff leftfile rightfile |
異なる行が見つかると、diff はその相違の原因 (行の追加、削除、変更) と影響を受けた行数を判断し、各ファイル内の個々の相違箇所の行番号と該当テキストを表示します。
相違の原因が行の追加による場合、diff は次の形式で行番号を表示します。
l[,l] a r[,r] |
l は leftfile の行番号、r は rightfile の行番号です。
相違の原因が行の削除による場合は、上記の a の代わりに d が表示され、行の変更による場合は c が表示されます。
各ファイル内の該当行は、行番号情報の次の行に表示されます。leftfile 内のテキストの前には左角括弧 (<) が付き、rightfile 内のテキストの前には右角括弧 (>) が付きます。
次の例では、最初に 2 つのファイルの内容を表示し、その後で diff コマンドを使ってそれらの相違点を表示しています。
比較される 2 つのファイルの内容が同じであれば、diff コマンドを実行しても、何も出力されません。
diff コマンドには、この節で説明した以外にも多数のオプションがあります。詳細については、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。
あるファイルの 3 つのバージョンを同時に比較する場合は、次に示す diff3 コマンドを使います。
$ diff3 file1 file2 file3 |
diff3 コマンドはファイルの 3 つのバージョンを比較し、内容が異なる範囲に以下のコードを付加して表示します。
==== 3 つのファイルがすべて異なる ====1 file1 が他の 2 つと異なる ====2 file2 が他の 2 つと異なる ====3 file3 が他の 2 つと異なる
非常に大きいファイルを比較する場合は、diff の代わりに bdiff コマンドを使います。bdiff の使い方と出力内容は、diff と同じです。
$ bdiff leftfile rightfile |
3500 行以上のファイルでは、diff ではなく bdiff を使ってください。