diff – ファイルやディレクトリの差分を表示するコマンド

差分・比較
スポンサーリンク

diff コマンドは、2つのファイルやディレクトリを比較し、異なる部分を表示するためのコマンドです。
ソースコードの変更点確認や設定ファイルの違いをチェックするときによく使われます。

構文(Syntax)

diff [オプション] FILE1 FILE2
diff [オプション] DIR1 DIR2

主なオプション一覧

オプション説明使用例
-u差分を「行単位」で見やすく統一フォーマットで表示diff -u old.txt new.txt
-cコンテキスト形式で差分を表示(周囲の数行を含む)diff -c old.txt new.txt
-i大文字・小文字の違いを無視diff -i file1.txt file2.txt
-w空白文字の違いを無視diff -w file1.txt file2.txt
-rディレクトリを再帰的に比較diff -r dir1 dir2
--side-by-side並列形式で比較結果を表示diff --side-by-side file1.txt file2.txt
--suppress-common-lines同じ行を出力せず差分のみを表示(--side-by-sideと併用可)diff --side-by-side --suppress-common-lines file1.txt file2.txt

実行例

例1: 2つのファイルの差分を統一フォーマットで表示

diff -u file1.txt file2.txt

出力例(変更行が -+ で表示される):

- Hello World
+ Hello Linux

例2: 空白の違いを無視して比較

diff -w file1.txt file2.txt

出力: 差分なし(空白だけの違いは無視)

例3: ディレクトリ全体を再帰的に比較

diff -r dir1 dir2

出力例:

Only in dir2: newfile.txt
Files dir1/config.cfg and dir2/config.cfg differ

例4: 並列形式で比較

diff --side-by-side file1.txt file2.txt

出力例(左右に比較表示):

Hello World           | Hello Linux
Goodbye               | Goodbye

例5: 権限不足でのエラー例

diff /etc/<shadow> backup_shadow

出力例:

diff: /etc/<shadow>: Permission denied

sudo が必要なファイルでは権限エラーとなる。

関連コマンド

  • cmp : ファイルをバイト単位で比較し、最初の違いを表示する。
  • comm : 2つのソート済みファイルを比較し、共通行と差分を表示する。
  • patch : diff で作成した差分ファイルを元に変更を適用する。
  • git diff : Gitリポジトリ内の変更点を表示する。

備考

  • GNU版とBSD版でオプションの挙動に差異がある場合がある。
  • 権限が必要なファイル比較では sudo が必要。
  • diff/etc/group や設定ファイル編集時の差分確認に役立つが、更新そのものは vi などのエディタで行う。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント