diff — 比較兩個檔案的差異
逐行比較兩個文字檔案並顯示差異。
語法
diff [選項] 檔案1 檔案2
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-u, --unified[=N] |
統一格式(前後各 N 行 context,最常用) | diff -u old.txt new.txt |
-i, --ignore-case |
忽略大小寫差異 | diff -i file1 file2 |
-w, --ignore-all-space |
忽略所有空白差異 | diff -w file1 file2 |
-r, --recursive |
遞迴比較目錄 | diff -r dir1/ dir2/ |
-q, --brief |
只顯示檔案是否不同,不顯示詳細 | diff -q file1 file2 |
-b, --ignore-space-change |
忽略空白數量差異 | diff -b file1 file2 |
--color |
以顏色標示差異 | diff --color file1 file2 |
使用範例
範例 1:基本比較
輸出中 < 代表第一個檔案的行,> 代表第二個檔案的行。
$ diff config.old.yml config.yml
3c3
< port: 8080
---
> port: 80
7d6
< debug: true
範例 2:統一格式(最常用,git diff 的格式)
-u 輸出更易讀:- 代表刪除行,+ 代表新增行,@@ 顯示行號範圍。
$ diff -u config.old.yml config.yml
--- config.old.yml 2026-05-01
+++ config.yml 2026-05-20
@@ -1,7 +1,6 @@
host: localhost
-port: 8080
+port: 80
-debug: true
範例 3:產生 patch 補丁檔
將 diff 輸出重導向到 .patch 檔,可用 patch 指令套用到其他主機。
$ diff -u original.conf modified.conf > changes.patch
範例 4:遞迴比較兩個目錄
比較兩個目錄的所有檔案差異,常用於確認部署的變更範圍。
$ diff -rq /etc/nginx/ /etc/nginx.backup/
Files /etc/nginx/nginx.conf and /etc/nginx.backup/nginx.conf differ
常見錯誤與排錯
diff: /path: Is a directory
- 原因
- 比較目錄時未加 -r 選項。
- 解法
- 加上 -r 進行遞迴目錄比較。