概述
diff -u 以統一格式比較兩個檔案的內容並輸出差異。此格式顯示變更的行以及周圍幾行的上下文,因此可以輕鬆了解哪些部分是如何變更的。這對於原始碼管理或追蹤設定檔變更歷史至關重要。
主要特點
- 以統一格式顯示差異
- 提供變更的上下文
- 適用於程式碼審查和版本控制
- 清晰區分新增/刪除/修改的內容
主要選項
diff 命令提供多種選項,這裡我們將說明與 `-u` 選項一起常用的選項。
輸出格式
比較行為
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`diff` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
使用 diff -u 命令的各種範例。
比較兩個檔案的統一格式差異
diff -u file1.txt file2.txt
以統一格式輸出 file1.txt 和 file2.txt 的差異。
遞迴比較兩個目錄中的檔案
diff -ur dir1 dir2
遞迴地比較 dir1 和 dir2 目錄中的所有檔案,並以統一格式輸出。
忽略空格變化比較檔案
diff -uw file1.txt file2.txt
忽略檔案內容中的空格字元 (空格、tab 等) 變化,僅比較實際內容差異。
忽略特定模式的行比較檔案
diff -u -I '^#' config1.conf config2.conf
忽略註解行 (以 # 開頭的行),比較 config1.conf 和 config2.conf 檔案的差異。
將統一格式輸出儲存為補丁檔案
diff -u old_file.txt new_file.txt > changes.patch
以統一格式輸出兩個檔案的差異,並將結果儲存到 'changes.patch' 檔案。此檔案可透過 'patch' 命令應用。
提示與注意事項
有效解釋和利用 diff -u 輸出結果的提示。
統一格式輸出解釋方法
diff -u 的輸出使用以下符號來表示變更:
- --- (三個連字元): 表示原始 (old) 檔案的路徑和時間戳。
- +++ (三個加號): 表示新 (new) 檔案的路徑和時間戳。
- @@ -OLD_START,OLD_COUNT +NEW_START,NEW_COUNT @@: '塊標頭',表示變更發生的檔案行號和範圍。
- - (連字元): 僅存在於原始檔案的行,表示已刪除的行。
- + (加號): 僅存在於新檔案的行,表示已新增的行。
- (空格): 兩個檔案都存在的行,表示未變更的上下文行。
與 patch 命令的整合
diff -u 生成的輸出可用作 `patch` 命令的輸入。這使得您可以輕鬆地將一個檔案的變更應用到另一個檔案或還原。例如,使用 `diff -u old_file new_file > changes.patch` 命令生成補丁檔案後,可以使用 `patch -p0 < changes.patch` 命令將 `changes.patch` 的變更應用到 `old_file`,使其與 `new_file` 相同。