【完全リファレンス】Linuxでファイルの差分を確認する方法|diff・colordiff・vimdiff完全ガイド
- 作成日 2026.06.26
- linux
サーバー運用・コード管理・設定ファイルメンテナンスで頻繁に必要となる「2つのファイルの差分確認」:
# 設定ファイルのバックアップとの比較
diff /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# 環境ごとの比較
diff config/development.rb config/production.rb
# ディレクトリ全体の比較
diff -r ./project_old ./project_new
Linux には差分確認のための強力なツールが3つあります:
diff– 標準コマンド、複数の出力形式colordiff– 差分を色付きで見やすくvimdiff– Vim でインタラクティブに編集・比較
しかし、実務では:
diffの出力が読みづらい-cと-uの違いは?colordiffをインストールしたが上手く色が出ないvimdiffのキー操作が分からない(dp / do って何?)- ディレクトリ全体を比較したい
- パッチを作成したい
- 空白の差を無視したい
- 大量の差分から特定の変更だけ見たい
など、躓くポイントが多くあります。
本記事では、Linux でファイル差分を確認する方法を、diff / colordiff / vimdiff の3大ツールを中心にリファレンスとして完全網羅します。基本コマンド、各種出力形式、主要オプション、色付け、Vim でのインタラクティブ操作、ディレクトリ比較、パッチファイル作成、実践パターン、トラブルシューティング、FAQまで完全網羅。この1本でLinux の差分確認をマスターできます。
- 1. 結論:今すぐ使える基本パターン10選
- 2. diff コマンドの基本
- 3. diff の出力形式
- 4. 重要なオプション
- 5. ディレクトリの比較
- 6. colordiff の使い方
- 7. vimdiff の使い方
- 8. その他の差分ツール
- 9. パッチファイルの作成と適用
- 10. 実践パターン
- 11. ありがちなトラブル
- 12. diff の他コマンドとの連携
- 13. よくある質問(FAQ)
- 13.1. Q1. diff と cmp の違いは?
- 13.2. Q2. diff -u と diff -c どちらを使う?
- 13.3. Q3. 大文字小文字を無視したい
- 13.4. Q4. 空白の違いを無視したい
- 13.5. Q5. colordiff と diff –color どちらが良い?
- 13.6. Q6. vimdiff の dp/do を覚えるコツ
- 13.7. Q7. パッチで失敗した
- 13.8. Q8. ディレクトリの構造だけ比較
- 13.9. Q9. 巨大ファイルで差分計算が遅い
- 13.10. Q10. WebでBeautifulな差分
- 13.11. Q11. 設定ファイルの行末スペースで困る
- 13.12. Q12. patch コマンドの -p オプション
- 14. 参考リンク・関連資料
- 15. まとめ
結論:今すぐ使える基本パターン10選
時間がない方向けに、頻出パターンを先に示します。
# ① 基本(標準形式)
diff file1.txt file2.txt
# ② unified形式(最もよく使う)
diff -u file1.txt file2.txt
# ③ 色付きで表示(diff標準)
diff --color=auto file1.txt file2.txt
# ④ 並べて表示(side-by-side)
diff -y file1.txt file2.txt
# ⑤ ディレクトリ全体を再帰比較
diff -r dir1/ dir2/
# ⑥ 簡易表示(差分の有無のみ)
diff -q file1.txt file2.txt
# ⑦ 空白・大文字小文字無視
diff -w -i file1.txt file2.txt
# ⑧ colordiff で色付き
colordiff -u file1.txt file2.txt
# ⑨ vimdiff でインタラクティブ
vimdiff file1.txt file2.txt
# ⑩ パッチファイル作成
diff -u file1.txt file2.txt > changes.patch
詳細は以下で順に解説します。
diff コマンドの基本
diff とは
diff は POSIX 標準のファイル比較コマンド。ほぼすべての Linux/Unix 系 OS にプリインストール。
基本構文
diff [オプション] file1 file2
何も差分がない場合
diff identical1.txt identical2.txt
# 出力なし(exit code 0)
echo $? で結果確認:
0: 差分なし1: 差分あり2: エラー
簡単な例
ファイル1(file1.txt):
apple
banana
cherry
date
ファイル2(file2.txt):
apple
blueberry
cherry
elderberry
diff file1.txt file2.txt
出力:
2c2
< banana
---
> blueberry
4c4
< date
---
> elderberry
意味:
2c2: ファイル1の2行目とファイル2の2行目が変更(change)されている<: ファイル1の内容>: ファイル2の内容---: 区切り
標準形式の記号
| 記号 | 意味 |
|---|---|
< | 1つ目のファイルの行(左側) |
> | 2つ目のファイルの行(右側) |
c | 変更(change) |
a | 追加(add) |
d | 削除(delete) |
1,3c1,2 | ファイル1の1-3行とファイル2の1-2行が変更 |
行番号の読み方
2,4c2,5
→ ファイル1の2〜4行が、ファイル2の2〜5行に変更されている。
3a4,5
→ ファイル1の3行目の後に、ファイル2の4〜5行が追加。
5,7d6
→ ファイル1の5〜7行が、ファイル2の6行目の位置で削除。
diff の出力形式
標準形式(normal)
何も指定しない場合のデフォルト。前述の通り c/a/d 記号を使う。
diff file1.txt file2.txt
Unified 形式(-u、最もよく使う)
diff -u file1.txt file2.txt
出力例:
--- file1.txt 2026-06-20 10:00:00.000000000 +0900
+++ file2.txt 2026-06-20 10:05:00.000000000 +0900
@@ -1,4 +1,4 @@
apple
-banana
+blueberry
cherry
-date
+elderberry
意味:
--- file1.txt: 元ファイル+++ file2.txt: 比較対象@@ -1,4 +1,4 @@: ファイル1の1行目から4行分、ファイル2の1行目から4行分-: 削除された行+: 追加された行- (スペース始まり): 変更なしの行(コンテキスト)
-u は patch ファイルの標準形式。Git/Mercurial/SVN もこの形式を使う。
Unified の前後コンテキスト
# 前後3行をコンテキストとして表示(デフォルト)
diff -u file1.txt file2.txt
# 前後5行に変更
diff -U 5 file1.txt file2.txt
Context 形式(-c、古い形式)
diff -c file1.txt file2.txt
出力例:
*** file1.txt 2026-06-20 10:00:00
--- file2.txt 2026-06-20 10:05:00
***************
*** 1,4 ****
apple
! banana
cherry
! date
--- 1,4 ----
apple
! blueberry
cherry
! elderberry
意味:
***: 元ファイル---: 比較対象!: 変更された行
現代ではほぼ -u を使う。古いツールとの互換性目的のみ。
Side-by-side 形式(-y)
diff -y file1.txt file2.txt
出力例:
apple apple
banana | blueberry
cherry cherry
date | elderberry
意味:
|: 変更<: ファイル1のみ>: ファイル2のみ- 空白: 同じ
目視で比較する時に最も見やすい。ターミナル幅が広い時に効果的。
Side-by-side の幅指定
# デフォルトは端末幅
diff -y -W 200 file1.txt file2.txt
# 200文字幅で表示
同じ行を省略
diff -y --suppress-common-lines file1.txt file2.txt
差分のある行のみ表示。
Brief 形式(-q)
diff -q file1.txt file2.txt
出力:
Files file1.txt and file2.txt differ
差分の有無のみ確認。スクリプトで判定に使う:
if diff -q file1.txt file2.txt > /dev/null; then
echo "同一"
else
echo "差分あり"
fi
同一の場合に表示
diff -s file1.txt file2.txt
差分がない場合:
Files file1.txt and file2.txt are identical
通常 diff は差分がないと出力なしですが、-s で明示的に「同じ」と表示。
重要なオプション
大文字小文字を無視(-i)
diff -i file1.txt file2.txt
例:
file1: Hello
file2: HELLO
-i 付きなら差分なし扱い。
空白を無視
# 空白の量を無視
diff -w file1.txt file2.txt
# 行末・行頭の空白を無視
diff -b file1.txt file2.txt
# すべての空白を無視
diff -w file1.txt file2.txt
# 空行を無視
diff -B file1.txt file2.txt
例:
file1: hello world
file2: hello world (複数空白)
-w で差分なし扱い。
複数オプション組み合わせ
# Unified + 大文字小文字無視 + 空白無視 + 色付き
diff -u -i -w --color=auto file1.txt file2.txt
バイナリファイルの扱い
# バイナリファイルかチェック
diff file1.bin file2.bin
# Binary files file1.bin and file2.bin differ
# テキストとして扱う
diff -a file1.bin file2.bin
–color オプション(diff 標準の色付け)
GNU diff 3.4以降で対応:
diff --color file1.txt file2.txt
diff --color=auto file1.txt file2.txt
diff --color=always file1.txt file2.txt | less -R
diff --color=never file1.txt file2.txt
カラー設定:
auto: 端末出力時のみ色付け(デフォルト推奨)always: 常に色付け(パイプ経由でも)never: 色を使わない
colordiff を使わなくても、diff --color で十分なケースが多い。
ディレクトリの比較
基本
diff dir1/ dir2/
Only in dir1/: extra_file.txt
Only in dir2/: new_file.txt
diff dir1/common_file.txt dir2/common_file.txt
1c1
< old content
---
> new content
再帰的に比較(-r)
diff -r dir1/ dir2/
サブディレクトリも含めて比較。
同じファイルも表示(-s)
diff -r -s dir1/ dir2/
Files dir1/file_a.txt and dir2/file_a.txt are identical
Files dir1/file_b.txt and dir2/file_b.txt are identical
diff dir1/file_c.txt dir2/file_c.txt
...
ファイル名のみ(-q)
diff -q -r dir1/ dir2/
差分内容ではなく、どのファイルが違うかだけを表示。
特定パターンを除外(–exclude)
# .git ディレクトリを除外
diff -r --exclude=.git dir1/ dir2/
# 複数除外
diff -r --exclude=.git --exclude=node_modules --exclude='*.log' dir1/ dir2/
exclude-from でファイル指定
# exclude_patterns.txt に除外パターンを書く
cat > exclude_patterns.txt <<EOF
.git
node_modules
*.log
*.tmp
EOF
diff -r --exclude-from=exclude_patterns.txt dir1/ dir2/
実用例:プロジェクトのバージョン比較
# 旧バージョンと新バージョンのソース差分
diff -r -u --exclude=.git --exclude=tmp \
project_v1.0/ project_v1.1/ > changes.patch
詳細はLinux find オプション一覧の記事、Linux awk 使い方の記事も参照。
colordiff の使い方
colordiff とは
diff の出力を色付きで見やすく表示するラッパーツール。Perl で書かれている。
インストール
# Ubuntu/Debian
sudo apt install colordiff
# RHEL/CentOS/Rocky/AlmaLinux
sudo dnf install colordiff
# または
sudo yum install colordiff
# macOS(Homebrew)
brew install colordiff
基本的な使い方
# diff と同じ引数
colordiff file1.txt file2.txt
# Unified 形式(推奨)
colordiff -u file1.txt file2.txt
# パイプ経由
diff file1.txt file2.txt | colordiff

less で見る(色を保持)
# -R オプションで色を保持
colordiff -u file1.txt file2.txt | less -R

-R でANSI エスケープシーケンスを処理。これがないと色が文字化けする。
設定ファイル
# システム全体: /etc/colordiffrc
# ユーザー個別: ~/.colordiffrc
サンプル ~/.colordiffrc:
banner=no
color_patches=yes
plain=off
newtext=darkgreen
oldtext=darkred
diffstuff=darkcyan
cvsstuff=darkblue
色名: black, red, green, yellow, blue, magenta, cyan, white、dark* バージョンもあり。
git diff の色との連動
# git diff 風の色設定例
cat > ~/.colordiffrc <<EOF
newtext=green
oldtext=red
diffstuff=cyan
EOF
colordiff vs diff –color
# どちらでも色付き表示
diff --color=auto -u file1.txt file2.txt
colordiff -u file1.txt file2.txt
| 観点 | diff --color | colordiff |
|---|---|---|
| 追加インストール | 不要(diff 3.4+) | 必要 |
| 設定ファイル | なし | ~/.colordiffrc |
| カスタマイズ性 | 限定的 | 高い |
| パイプ対応 | --color=always | 標準対応 |
新しい環境では diff --color で十分。細かいカスタマイズが必要なら colordiff。
alias 登録
# ~/.bashrc または ~/.zshrc
alias diff='colordiff'
# または
alias diff='diff --color=auto'
これで diff だけで色付きに。
vimdiff の使い方
vimdiff とは
Vim ベースのインタラクティブな差分表示・編集ツール。Vim がインストールされていれば使える。
起動
vimdiff file1.txt file2.txt
または:
vim -d file1.txt file2.txt
画面の見方
┌─────────────────┬─────────────────┐
│ file1.txt │ file2.txt │
├─────────────────┼─────────────────┤
│ apple │ apple │
│ banana │ blueberry │ ← 異なる行はハイライト
│ cherry │ cherry │
│ date │ elderberry │ ← 同上
└─────────────────┴─────────────────┘
- 左右に分割(垂直):デフォルト
- 異なる行:色付きハイライト
- 同じ行:折りたたまれることも
3つ以上のファイル
vimdiff file1.txt file2.txt file3.txt
最大 8ファイルまで対応。
ナビゲーション(最重要)
| キー | 動作 |
|---|---|
]c | 次の差分へ |
[c | 前の差分へ |
Ctrl+w h | 左のウィンドウへ |
Ctrl+w l | 右のウィンドウへ |
Ctrl+w w | 次のウィンドウへ |
Ctrl+w Ctrl+w | 同上 |
差分の取り込み(重要)
vimdiff の真価:
| キー | 動作 |
|---|---|
dp | diff put: 現在の差分を反対側にコピー |
do | diff obtain: 反対側の差分をこちらに取り込み |
例:
- file1 を見ながら
]cで差分位置へ dpで「file1 の内容を file2 へコピー」doで「file2 の内容を file1 に取り込み」
これでインタラクティブにマージできます。
折りたたみの操作
差分のない箇所は折りたたまれて表示:
| キー | 動作 |
|---|---|
zo | 折りたたみを開く |
zc | 折りたたむ |
zr | 全体の折りたたみレベルを下げる |
zM | 全部折りたたむ |
zR | 全部開く |
レイアウト変更
# 水平分割(上下)
vimdiff -o file1.txt file2.txt
または、起動後に:
:set diffopt+=horizontal
保存と終了
| キー | 動作 |
|---|---|
:w | 現在のウィンドウを保存 |
:wa | 全部保存 |
:q | 現在のウィンドウを閉じる |
:qa | 全ウィンドウ閉じる |
:qa! | 強制終了(変更破棄) |
diff モードの ON/OFF
:diffoff
" 差分モード解除(通常のVimに戻る)
:diffthis
" 現在のバッファを差分モードに
:diffupdate
" 差分を再計算
vim 内で diff を開く
:vert diffsplit file2.txt
" 縦分割で差分表示
:diffsplit file2.txt
" 横分割で差分表示
gvim での vimdiff
gvimdiff file1.txt file2.txt
GUI 版。色がより見やすい場合があります。
vimdiff の色設定
" .vimrc に追加
highlight DiffAdd cterm=bold ctermbg=22 gui=none guibg=#005f00
highlight DiffDelete cterm=bold ctermbg=52 gui=none guibg=#5f0000
highlight DiffChange cterm=bold ctermbg=24 gui=none guibg=#005f5f
highlight DiffText cterm=bold ctermbg=88 gui=none guibg=#870000
その他の差分ツール
sdiff(side-by-side diff)
sdiff file1.txt file2.txt
diff -y と似た出力ですが、マージモードもあります:
sdiff -o merged.txt file1.txt file2.txt
# インタラクティブにマージ
選択肢:
l: left(file1)を採用r: right(file2)を採用e: edit(手動編集)q: quit
wdiff(word diff)
sudo apt install wdiff # インストール
wdiff file1.txt file2.txt
単語単位で差分を表示:
The quick [-brown-] {+red+} fox jumps over the lazy dog
[-...-]: 削除{+...+}: 追加
git diff
git 管理下では:
git diff file.txt # ワーキングツリー vs インデックス
git diff --staged file.txt # インデックス vs HEAD
git diff HEAD # ワーキングツリー vs HEAD
git diff branch1 branch2 -- file.txt # ブランチ間
# 単語単位
git diff --word-diff file.txt
# git管理外のファイルでもgit diffが使える
git diff --no-index file1.txt file2.txt
色付け・パッチ出力が完成度高く、開発作業では git diff を使うことが多い。
meld(GUI ツール)
sudo apt install meld
meld file1.txt file2.txt
meld dir1/ dir2/
GUI で最もユーザーフレンドリーな差分表示。デスクトップ環境で作業する時に。
kompare(KDE)
sudo apt install kompare
kompare file1.txt file2.txt
KDE 環境での GUI 差分ツール。
パッチファイルの作成と適用
パッチファイル作成
diff -u original.txt modified.txt > my_changes.patch
または複数ファイル:
diff -urN original_dir/ modified_dir/ > my_changes.patch
オプション:
-u: unified形式-r: 再帰-N: 新規ファイル含む
パッチ適用
patch -p0 < my_changes.patch
# または
patch -p1 < my_changes.patch
-p の数字はパスの省略レベル:
-p0: パス変更なし-p1: 先頭1階層を省略
パッチの dry-run
patch --dry-run -p1 < my_changes.patch
# 実際には適用しないで確認
パッチのロールバック
patch -R -p1 < my_changes.patch
# Reverse: 適用済みパッチを取り消し
実践パターン
1. 設定ファイルのバックアップ比較
# 編集前にバックアップ
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# 編集後に確認
diff -u /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
# または色付き
diff --color=auto -u /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
2. プロジェクトのバージョン比較
# 古いバージョンと新しいバージョン
diff -r -u --exclude=.git --exclude=node_modules \
v1.0/ v1.1/ > version_changes.diff
3. 設定の環境差分
# 開発・本番の設定差分
diff -u config/development.rb config/production.rb
4. ログファイルの差分
# 1分前と現在のログを比較
diff -u log/production.log.1 log/production.log
Linux awk 使い方の記事と組み合わせて高度な解析:
diff <(awk '{print $1}' file1.log) <(awk '{print $1}' file2.log)
5. 大量のファイルから差分のあるものだけ抽出
# 名前のみ表示
diff -q -r dir1/ dir2/ | grep "^Files" | cut -d' ' -f2
# 特定ファイルだけ詳細表示
for f in $(diff -q -r dir1/ dir2/ | grep "^Files" | cut -d' ' -f2); do
echo "=== $f ==="
diff -u "$f" "${f/dir1/dir2}"
done
6. 設定ファイルの diff を共有
# パッチ作成 → メンバーに送信
diff -u nginx.conf.old nginx.conf > nginx_update.patch
# 受け取った側で適用
patch nginx.conf < nginx_update.patch
7. 巨大ファイルの効率比較
# 最初の100行だけ
diff <(head -100 large_file1.log) <(head -100 large_file2.log)
# ハッシュで一致確認
md5sum file1 file2
# 違うことだけ確認できれば十分なケース
8. 行末改行コードの違い
# CRLF vs LF
file file1.txt file2.txt
# file1.txt: ASCII text, with CRLF line terminators
# file2.txt: ASCII text
# 改行コード変換
dos2unix file1.txt
ありがちなトラブル
less で色が見えない
diff --color=auto file1 file2 | less
# 色が消える!
# 解決:less -R
diff --color=always file1 file2 | less -R
--color=always + less -R の組み合わせ。
改行コードの違いで全行差分
diff file_lf.txt file_crlf.txt
# 全行に差分マーク
# 改行コードを統一
sed -i 's/\r$//' file_crlf.txt
または:
diff <(tr -d '\r' < file_lf.txt) <(tr -d '\r' < file_crlf.txt)
diff の出力が見づらい
# 標準形式 → unified
diff -u file1 file2
# unified → 色付き
diff -u --color=auto file1 file2
# 色付き → vimdiff(インタラクティブ)
vimdiff file1 file2
段階的に強化。
大量の差分でターミナルが埋まる
# less でページング
diff -u file1 file2 | less
# またはファイル出力
diff -u file1 file2 > diff_output.txt
バイナリファイル
diff file1.png file2.png
# Binary files file1.png and file2.png differ
# テキストとして強制
diff -a file1.png file2.png
# ただし読めない出力に
# 専用ツール
cmp file1.png file2.png
# 最初の違いのみ報告
vimdiff でファイルが折りたたまれて見えない
:set foldlevel=99
" すべて開く
zR
" 同上
vim内のシンタックスハイライトと衝突
:syntax off
" シンタックスハイライト無効化
:syntax on
" 戻す
diff の他コマンドとの連携
grep と組み合わせ
# 特定パターンを含む差分行のみ
diff -u file1 file2 | grep "^[+-]" | grep "error"
詳細はLinux grep オプション一覧の記事も参照。
find と組み合わせ
# 1日以内に変更されたファイルだけ比較
find . -mtime -1 -name "*.conf" | while read f; do
diff -u "$f.bak" "$f"
done
詳細はLinux find オプション一覧の記事も参照。
crontab で定期実行
# 毎日設定ファイルの変更を確認
crontab -e
0 9 * * * diff -u /etc/nginx/nginx.conf.yesterday /etc/nginx/nginx.conf > /tmp/nginx_changes.log 2>&1
詳細はcrontab 書き方 例の記事も参照。
awk と組み合わせ
# 追加行(+)のみ抽出
diff -u file1 file2 | awk '/^\+[^+]/'
# 削除行(-)のみ抽出
diff -u file1 file2 | awk '/^-[^-]/'
詳細はLinux awk 使い方の記事も参照。
よくある質問(FAQ)
Q1. diff と cmp の違いは?
| ツール | 用途 | 出力 |
|---|---|---|
diff | 行単位の差分表示 | 詳細な差分 |
cmp | バイト単位の比較 | 最初の違いの位置のみ |
# テキスト → diff
diff file1.txt file2.txt
# バイナリ → cmp
cmp file1.bin file2.bin
Q2. diff -u と diff -c どちらを使う?
**-u(unified)**を使う。-c(context)は古い形式で、現在ほぼ使わない。
Q3. 大文字小文字を無視したい
diff -i file1.txt file2.txt
Q4. 空白の違いを無視したい
# 空白量を無視
diff -w file1.txt file2.txt
# タブとスペースの混在を無視
diff -E file1.txt file2.txt
# 全空白無視
diff -w -E -b file1.txt file2.txt
Q5. colordiff と diff –color どちらが良い?
新しい diff(3.4+)が入っていれば diff --color で十分。古い環境や細かいカスタマイズが必要なら colordiff。
Q6. vimdiff の dp/do を覚えるコツ
- dp: diff put(押し出す、相手に送る)
- do: diff obtain(取得、相手から取り込む)
文字通り p = put, o = obtain。
Q7. パッチで失敗した
patch -p1 < changes.patch
# 一部失敗
# 失敗箇所は .rej ファイルに保存される
ls *.rej
# nginx.conf.rej
.rej を確認して手動で適用。
Q8. ディレクトリの構造だけ比較
# ファイル名だけ
diff <(cd dir1 && find . -type f | sort) <(cd dir2 && find . -type f | sort)
Q9. 巨大ファイルで差分計算が遅い
# 単純な差分判定だけなら md5
md5sum file1 file2
# ハッシュが違えば内容も違う
# または cmp(最初の違いで止まる)
cmp file1 file2
Q10. WebでBeautifulな差分
# diff2html
npm install -g diff2html-cli
diff -u file1 file2 | diff2html -i stdin
# ブラウザで HTML 表示
Q11. 設定ファイルの行末スペースで困る
# 表示
cat -A file1
# 行末や特殊文字が見える
# 行末スペース削除
sed -i 's/[ \t]*$//' file1
Q12. patch コマンドの -p オプション
diff -ru a/path/to/file b/path/to/file
→ path/to/file を対象にしたい場合:
patch -p1 < changes.patch
# 1階層省略(a/, b/)
参考リンク・関連資料
公式
- GNU diffutils – diff/cmp/diff3 公式
- colordiff – colordiff 公式
- Vim diff documentation – vimdiff 公式
関連ツール
関連記事(本サイト)
- Linux find オプション一覧 – ファイル検索との連携
- Linux grep オプション一覧 – 文字列検索との連携
- Linux awk 使い方 – データ加工との連携
- crontab 書き方 例 – 定期的な差分監視
- SSH host key verification failed – 接続時のキー差分
- Docker no space left on device – イメージ容量管理
- Ubuntu IPアドレス確認 – サーバー間設定比較
- wget と curl 違い – ファイル取得後の比較
- Linux パッケージ uninstall – 設定変更前後の比較
- Address already in use – ポート設定比較
まとめ
Linux でファイル差分を確認する3大ツール、要点を再整理します。
diff の使い分け
| シーン | 推奨オプション |
|---|---|
| 一般的な比較 | diff -u |
| 色付き表示 | diff --color=auto -u |
| 並べて表示 | diff -y |
| ディレクトリ | diff -r -u |
| 同一確認のみ | diff -q |
| 空白無視 | diff -w |
| パッチ作成 | diff -u -r |
colordiff
- diff の出力を色付け
~/.colordiffrcでカスタマイズ- 新しい diff には
--colorがあるので必須ではない
vimdiff
- インタラクティブな差分編集
]c/[cでナビゲーションdp/doで差分の取り込み- マージ作業に最適
その他のツール
- sdiff: side-by-side + マージモード
- wdiff: 単語単位の差分
- git diff: バージョン管理下の差分
- meld / kompare: GUI ツール
- cmp: バイナリの簡易比較
パッチファイル
diff -u old new > changes.patch
patch -p1 < changes.patch # 適用
patch -R -p1 < changes.patch # 取り消し
これらの知識は、サーバー運用・設定管理・コードレビュー・バックアップ確認など、Linux 環境のあらゆる場面で活用できます。本記事をブックマークしておけば、差分確認の作業を大幅に効率化できます。
本記事は2026年6月時点の情報をもとに、GNU diffutils 3.10+、colordiff 1.0.20+、Vim 9.x での動作確認・公式ドキュメントに基づき作成しています。ディストリビューションによって挙動が異なる場合があるため、最新の情報は各ツールの man ページ(man diff、man colordiff、man vimdiff)もあわせてご確認ください。
-
前の記事
【完全版】Ruby/Rails「undefined method ‘X’ for nil:NilClass」エラーの原因と対処法|nilエラーの全パターン徹底解説 2026.06.25
-
次の記事
【完全版】Ruby/Rails「NameError: uninitialized constant」エラーの原因と対処法|Zeitwerk時代の定数解決 2026.06.26
コメントを書く