Home
1016 words
5 minutes
【Unix】diffコマンドの解説
2025-02-22

最終更新:2025-02-22

diffコマンドは、Unix系システムにおいて、2つのファイルまたはディレクトリの差分を比較するためのツールである。

ソースコードやテキストファイルの変更点を確認する際に広く用いられる。diffは、行単位で差分を抽出し、その結果を標準出力に表示する。


使用方法#

最も使用方法は以下の通りである。

diff file1.txt file2.txt

上記の例では、file1.txtfile2.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. 基本的なファイル比較#

  1. ターミナルを開く。

  2. 以下のコマンドを入力する:

    diff file1.txt file2.txt
    

    これにより、file1.txtfile2.txtの差分が表示される。変更箇所がどのように示されるかを確認する。

2. 統一形式での比較#

変更内容の文脈を把握しやすくするために、-uオプションを用いる。

diff -u file1.txt file2.txt

この出力では、変更箇所の前後数行が含まれ、どの部分がどのように変更されたかが分かりやすく表示される。

3. 大文字小文字および空白の違いを無視して比較#

変更行が大文字・小文字のみであったり、空白数が異なる場合、無視するように設定することができる。

diff -i -w file1.txt file2.txt

これにより、文字の大小や空白の違いを無視して、実質的な変更箇所のみが比較される。

4. ディレクトリ全体を再帰的に比較#

ディレクトリdir1dir2の内容を再帰的に比較する場合、以下のコマンドを実行する。

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」といった短いメッセージが表示される。

【Unix】diffコマンドの解説
https://ss0832.github.io/posts/20250222_diff_command_guide/
Author
ss0832
Published at
2025-02-22