diffコマンド 【diff command】
概要
diffコマンド(diff command)とは、LinuxなどのUNIX系OSでよく利用されるコマンド/プログラムの一つで、指定した二つのファイルを比較してその違い(差分)を表示するもの。転じて、(diffコマンドを用いて作られたものでなくても)二つのファイルやデータを比較して違いを抽出したデータを指すこともある。diffコマンドは比較対象の二つのファイルのうち一方(通常は一番目の引数で指定された方)のファイルを基準として、もう一方のファイルに追加、削除、変更された部分をそれぞれ探し出し、その位置(行番号)と、どのように異なるかを出力する。両者に共通している(違いのない)部分は出力しない。
伝統的な出力形式では、新旧の相違点を検知すると「0a1,3」や「2,4c4」のように、旧ファイルの当該位置、変更内容、新ファイルの当該位置を連ねた行が生成される。「1,3」は範囲を表す記法で、この場合は行番号1~3(2~4行目)を意味する。
変更内容は「a」が追加、「c」が変更(置き換え)、「d」が削除である。これに続けて、次行から一行ずつ、旧→新で追加あるいは置換する内容は先頭に「> 」を、旧版から削除する内容は「< 」を付けて変更のあった行を記述する。
同じファイルの旧版に対して、diffコマンドで出力した変更点を反映させれば更新版を得ることができるため、ファイルを編集・更新する際に変更箇所のみを保存していくことで、少ない記憶容量で各時点の内容をすべて保管・復元できるようになる。この仕組みはコンピュータプログラムのソースコードの作成・編集などで広く用いられている。
diffコマンドは1974年に初期のUNIXシステムが開発される中で追加されたプログラムで、以後、伝統的な標準コマンドの一つとしてほとんどのUNIX系OSに組み込まれている。GNUプロジェクトでは「GNU Diffutils」というオープンソースの実装を公開しており、diffだけでなくcmp、diff3、patchなどよく併用されるコマンドが同梱されている。
(2023.8.15更新)