在日常開發(fā)和維護中,尤其是在處理多版本文件、目錄對比或者文檔生成時,我們常常需要分析不同版本之間的區(qū)別。diff 命令(即 differences)是一個非常有用的工具,它可以逐行比較文件或目錄,并顯示差異。
diff 命令簡介
diff 命令是 Linux 系統(tǒng)中內(nèi)置的工具,可以幫助我們快速發(fā)現(xiàn)兩個文件或目錄的不同。如果文件相同,則不會有任何輸出;如果有差異,則會以特定格式展示修改細節(jié)。diff 不僅適用于文件比較,還可以遞歸比較目錄中的文件差異,非常靈活和實用。
適用的 Linux 版本
diff 命令在大部分 Linux 發(fā)行版中都已預裝,例如 Ubuntu、Debian、Fedora 和 CentOS 等。
如果未安裝,可以使用包管理器安裝:
基于 Debian 的系統(tǒng)(如 Ubuntu):
sudo apt-get install diffutils
基于 Red Hat 的系統(tǒng)(如 CentOS):CentOS 7:
sudo yum install diffutils
CentOS 8:
sudo dnf install diffutils
diff 命令基本語法
diff [選項] 文件1 文件2
常用選項及功能說明
選項 | 描述 |
-i | 忽略大小寫差異 |
-w | 忽略所有空格差異 |
-B | 忽略空白行差異 |
-c | 以 C 語言風格顯示上下文信息 |
-u | 以統(tǒng)一格式顯示上下文信息(類似 Git 的輸出風格) |
-y | 并排比較文件內(nèi)容 |
-r | 遞歸比較目錄 |
-q | 僅顯示文件是否存在差異,不輸出具體差異內(nèi)容 |
-b | 忽略行尾的多余空白和制表符 |
-n | 以 RCS 格式輸出差異(適用于版本控制場景) |
diff 命令應用實例
1. 比較兩個文件
diff file1.txt file2.txt
輸出文件 file1.txt 和 file2.txt 的差異內(nèi)容。
2. 忽略大小寫比較
diff -i file1.txt file2.txt
忽略大小寫差異,只比較內(nèi)容。
3. 忽略行內(nèi)空格
diff -w file1.txt file2.txt
適用于行內(nèi)空格差異不重要的場景。
4. 顯示上下文信息
diff -c file1.txt file2.txt
用 C 語言風格顯示差異及其上下文信息。
5. 使用 Git 風格的輸出
diff -u file1.txt file2.txt
生成類似 Git 中的差異格式,清晰地標記修改、刪除或新增行。
6. 并排顯示差異
diff -y file1.txt file2.txt
兩文件的內(nèi)容并排顯示,直觀對比差異。
7. 比較兩個目錄
diff -r dir1/ dir2/
遞歸比較兩個目錄,包括子目錄和文件。
8. 僅顯示差異文件名
diff -q dir1/ dir2/
不輸出具體差異內(nèi)容,只顯示有差異的文件名。
9. 生成 Patch 文件
diff -Naur olddir newdir > update.patch
通過比較舊版本和新版本目錄,生成差異補丁文件 update.patch。
10. 使用 Diffstat 查看統(tǒng)計信息
diff -uN dir1/ dir2/ | diffstat
以圖表形式顯示新增、修改或刪除的行數(shù)。