最終更新:2025-02-22
diff
コマンドは、Unix系システムにおいて、2つのファイルまたはディレクトリの差分を比較するためのツールである。
ソースコードやテキストファイルの変更点を確認する際に広く用いられる。diff
は、行単位で差分を抽出し、その結果を標準出力に表示する。
使用方法
最も使用方法は以下の通りである。
diff file1.txt file2.txt
上記の例では、file1.txt
とfile2.txt
の違いが標準出力に表示される。出力は、どの行が追加、削除、変更されたかを示す。
主なオプションの詳細
以下、diff
コマンドで利用可能な主なオプションを、できるだけ具体的に説明する。
-u, —unified
統一形式(ユニファイド形式)で差分を表示するオプションである。
この形式は、変更箇所の前後数行を含むため、変更内容の文脈が分かりやすい。
例:diff -u file1.txt file2.txt
-c, —context
コンテキスト形式で差分を表示する。-u
に似ているが、出力の形式が異なる。変更前後の行も表示し、変更箇所が文脈と共に提示される。
例:diff -c file1.txt file2.txt
-i, —ignore-case
大文字と小文字の違いを無視して比較する。
例:diff -i file1.txt file2.txt
-w, —ignore-all-space
空白文字の違い(スペース、タブなど)を無視して比較する。
例:diff -w file1.txt file2.txt
-b, —ignore-space-change
連続する空白の量の変化を無視して比較する。
例:diff -b file1.txt file2.txt
-B, —ignore-blank-lines
空白行の違いを無視して比較する。
例:diff -B file1.txt file2.txt
-r, —recursive
ディレクトリを再帰的に比較する。
指定した2つのディレクトリ内のファイルを、同一構造である前提で比較する。
例:diff -r dir1 dir2
-q, —brief
ファイルが異なるかどうかのみを表示し、詳細な差分は出力しない。
例:diff -q file1.txt file2.txt
-N, —new-file
存在しないファイルを空ファイルとして扱い、比較を行う。
例えば、片方のディレクトリにのみ存在するファイルも比較対象とする場合に有用である。
例:diff -N dir1 dir2
-a, —text
バイナリファイルもテキストファイルとして扱う。
通常、diff
はバイナリファイルに対しては「バイナリファイルが異なる」とのみ表示するが、このオプションにより内容をテキストとして比較する。
例:diff -a file1.bin file2.bin
ハンズオン
以下に、diff
コマンドの使用例を具体的な手順で示す。
1. 基本的なファイル比較
ターミナルを開く。
以下のコマンドを入力する:
diff file1.txt file2.txt
これにより、
file1.txt
とfile2.txt
の差分が表示される。変更箇所がどのように示されるかを確認する。
2. 統一形式での比較
変更内容の文脈を把握しやすくするために、-u
オプションを用いる。
diff -u file1.txt file2.txt
この出力では、変更箇所の前後数行が含まれ、どの部分がどのように変更されたかが分かりやすく表示される。
3. 大文字小文字および空白の違いを無視して比較
変更行が大文字・小文字のみであったり、空白数が異なる場合、無視するように設定することができる。
diff -i -w file1.txt file2.txt
これにより、文字の大小や空白の違いを無視して、実質的な変更箇所のみが比較される。
4. ディレクトリ全体を再帰的に比較
ディレクトリdir1
とdir2
の内容を再帰的に比較する場合、以下のコマンドを実行する。
diff -r dir1 dir2
または、ディレクトリ間の差分に加え、片方にしか存在しないファイルも確認するためには、-N
オプションを併用する。
diff -r -N dir1 dir2
5. 差分があるかどうかのみを確認する
詳細な差分が不要で、ファイルが異なるかどうかだけを確認したい場合は、-q
オプションを使用する。
diff -q file1.txt file2.txt
これにより、もし差分が存在すれば「Files file1.txt and file2.txt differ」といった短いメッセージが表示される。