diff
文字處理
用法
diff -u [old] [new]顯示兩個檔案之間改了什麼;patch 和程式碼審查期待的是 -u 統一格式,而有差異時結束碼是 1,會讓開了 set -e 的指令檔中斷。
常用選項
| 選項 | 含義 |
|---|---|
| -u | Unified output, the format patch and code review expect |
| -r | Compare two directory trees |
| -q | Only say whether the files differ |
| -w | Ignore all whitespace |
| -i | Ignore case |
| -N | Treat a missing file as empty, which patches need |
範例
diff -u old.conf new.conf > fix.patchWrites a patch file.
diff -rq dirA dirBLists which files differ between two trees.
diff <(sort a.txt) <(sort b.txt)Compares two files ignoring line order (bash).
它們本來就是用管線串起來用的。串三條往往比讓一條命令做完所有事更短。
怎麼看
- 方括號 [ ] 表示這部分可以不寫。
- 省略號 … 表示可以寫多個。
- 選項區分大小寫——有些命令裡 -r 和 -R 不是一回事。
常見問題
Q. diff 是做什麼的?
顯示兩個檔案之間改了什麼;patch 和程式碼審查期待的是 -u 統一格式,而有差異時結束碼是 1,會讓開了 set -e 的指令檔中斷。
Q. 怎麼寫?
diff -u [old] [new] —— 方括號表示可以省略的部分。
Q. 值得記的選項有幾個?
這裡列了 6 個,完整列表在 man diff。這條命令屬於文字處理。
相關命令
man 手冊: man diff