Categories: linux

Linuxでファイルの違いを比較するdiffコマンドの使い方を徹底解説!

Linuxを使っていると、2つのファイルにどんな違いがあるのかを確認したくなる場面がよくあります。
プログラムのバージョン管理や設定ファイルの修正、あるいはバックアップファイルとの比較など、日常的に「差分確認」が必要になることは少なくありません。
そんな時に非常に便利なのが、標準で使える比較ツール「diff」コマンドです。
この記事では、diffコマンドの基本から応用までを、初心者にもわかりやすく解説していきます。


diffコマンドとは?

diffは、2つのファイルまたはディレクトリの内容の違い(差分)を表示するためのLinuxコマンドです。
たとえば、ある設定ファイルを変更した際に、その変更箇所だけを確認したいときなどに使われます。

diffは、「変更された部分だけを表示」するため、効率よく違いを把握できます。出力は独特な記号(a, d, cなど)を用いて構成されており、最初は少し戸惑うかもしれませんが、慣れれば非常に便利です。


基本的な使い方

ファイル同士を比較する

diff file1.txt file2.txt

このコマンドは、file1.txtfile2.txtの違いを比較して出力します。出力結果には、違いのある行とその前後の行が表示されます。

たとえば、次のような出力になります:

3c3
< Hello World
---
> Hello Linux

これは、「file1.txt」の3行目にある「Hello World」が、「file2.txt」では「Hello Linux」に変わっていることを意味します。

出力記号の意味

  • a(追加)…左側にない行が右側にある
  • d(削除)…左側にある行が右側にない
  • c(変更)…両方のファイルで内容が異なる

オプションで出力を見やすくする

diffはオプションをつけることで、よりわかりやすく、用途に応じた出力が可能になります。

-u(ユニファイド形式)

最もよく使われる形式で、Gitの差分表示でもおなじみです。

diff -u file1.txt file2.txt
--- file1.txt 2025-03-30
+++ file2.txt 2025-03-30
@@ -1,3 +1,3 @@
-Hello World
+Hello Linux

-uオプションは、変更前後の差分が一目で分かるように、前後の数行を表示します。-U5のように数字をつければ、前後5行など指定も可能です。

-c(コンテキスト形式)

diff -c file1.txt file2.txt

このオプションは、変更された箇所とその周囲の文脈(コンテキスト)を表示します。

*** file1.txt
--- file2.txt
***************
*** 1,3 ****
- Hello World
--- 1,3 ----
+ Hello Linux

ディレクトリの比較

diffはファイルだけでなく、ディレクトリ同士の比較にも使えます。

diff -r dir1 dir2

このコマンドは、dir1dir2内のファイルを再帰的に比較し、違いを一覧表示します。特に複数の設定ファイルがある環境では便利です。

さらに、-qオプションを使うと、違いがあるかないかだけを表示できます:

diff -qr dir1 dir2

差分をパッチファイルとして保存する

変更内容を「パッチファイル」に保存して、あとから適用したり、他人と共有することも可能です。

diff -u file1.txt file2.txt > patch.diff

このようにして作成したパッチファイルは、patchコマンドを使って適用できます。

patch file1.txt < patch.diff

これは開発現場などでよく使われるテクニックです。


空白や大文字・小文字を無視して比較する

空白の違いを無視する:-b または -w

diff -b file1.txt file2.txt  # 末尾のスペースを無視
diff -w file1.txt file2.txt # すべてのスペースやタブを無視

大文字・小文字を無視する:-i

diff -i file1.txt file2.txt

これにより、「hello」と「Hello」を同一とみなすようになります。


差分をHTML形式で表示したいとき

視覚的にわかりやすくしたい場合は、wdiffcolordiffdiff2htmlといったツールと組み合わせて使うことで、カラーやHTML形式での出力が可能になります。

たとえばcolordiffは、通常のdiff出力をカラー表示してくれるツールです。

sudo apt install colordiff
colordiff file1.txt file2.txt

よくある使い方の例

例1:設定ファイルを変更したときの差分確認

diff -u /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

例2:バージョンアップ前後のスクリプト比較

diff -u script_v1.sh script_v2.sh

まとめ

diffコマンドは、Linuxにおいて「ファイルの違いを確認する」ための定番ツールです。
シンプルな比較から、パッチファイルの作成、ディレクトリ全体の差分確認まで、使い方を覚えておくと大変便利です。

今回紹介したオプションや使い方を覚えておけば、日常の業務や開発、設定変更のチェックなど、さまざまな場面で役立つこと間違いありません。
ぜひdiffコマンドを使いこなして、作業効率をアップさせましょう。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。