Linuxを使っていると、2つのファイルにどんな違いがあるのかを確認したくなる場面がよくあります。
プログラムのバージョン管理や設定ファイルの修正、あるいはバックアップファイルとの比較など、日常的に「差分確認」が必要になることは少なくありません。
そんな時に非常に便利なのが、標準で使える比較ツール「diff」コマンドです。
この記事では、diffコマンドの基本から応用までを、初心者にもわかりやすく解説していきます。
diff
は、2つのファイルまたはディレクトリの内容の違い(差分)を表示するためのLinuxコマンドです。
たとえば、ある設定ファイルを変更した際に、その変更箇所だけを確認したいときなどに使われます。
diffは、「変更された部分だけを表示」するため、効率よく違いを把握できます。出力は独特な記号(a
, d
, c
など)を用いて構成されており、最初は少し戸惑うかもしれませんが、慣れれば非常に便利です。
diff file1.txt file2.txt
このコマンドは、file1.txt
とfile2.txt
の違いを比較して出力します。出力結果には、違いのある行とその前後の行が表示されます。
たとえば、次のような出力になります:
3c3
< Hello World
---
> Hello Linux
これは、「file1.txt」の3行目にある「Hello World」が、「file2.txt」では「Hello Linux」に変わっていることを意味します。
a
(追加)…左側にない行が右側にあるd
(削除)…左側にある行が右側にないc
(変更)…両方のファイルで内容が異なるdiffはオプションをつけることで、よりわかりやすく、用途に応じた出力が可能になります。
最もよく使われる形式で、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行など指定も可能です。
diff -c file1.txt file2.txt
このオプションは、変更された箇所とその周囲の文脈(コンテキスト)を表示します。
*** file1.txt
--- file2.txt
***************
*** 1,3 ****
- Hello World
--- 1,3 ----
+ Hello Linux
diffはファイルだけでなく、ディレクトリ同士の比較にも使えます。
diff -r dir1 dir2
このコマンドは、dir1
とdir2
内のファイルを再帰的に比較し、違いを一覧表示します。特に複数の設定ファイルがある環境では便利です。
さらに、-q
オプションを使うと、違いがあるかないかだけを表示できます:
diff -qr dir1 dir2
変更内容を「パッチファイル」に保存して、あとから適用したり、他人と共有することも可能です。
diff -u file1.txt file2.txt > patch.diff
このようにして作成したパッチファイルは、patch
コマンドを使って適用できます。
patch file1.txt < patch.diff
これは開発現場などでよく使われるテクニックです。
diff -b file1.txt file2.txt # 末尾のスペースを無視
diff -w file1.txt file2.txt # すべてのスペースやタブを無視
diff -i file1.txt file2.txt
これにより、「hello」と「Hello」を同一とみなすようになります。
視覚的にわかりやすくしたい場合は、wdiff
やcolordiff
、diff2html
といったツールと組み合わせて使うことで、カラーやHTML形式での出力が可能になります。
たとえばcolordiff
は、通常のdiff
出力をカラー表示してくれるツールです。
sudo apt install colordiff
colordiff file1.txt file2.txt
diff -u /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
diff -u script_v1.sh script_v2.sh
diffコマンドは、Linuxにおいて「ファイルの違いを確認する」ための定番ツールです。
シンプルな比較から、パッチファイルの作成、ディレクトリ全体の差分確認まで、使い方を覚えておくと大変便利です。
今回紹介したオプションや使い方を覚えておけば、日常の業務や開発、設定変更のチェックなど、さまざまな場面で役立つこと間違いありません。
ぜひdiffコマンドを使いこなして、作業効率をアップさせましょう。