詳解 Linux 中的 diff 命令及示例
文件比較在 Linux 中起著重要的作用,特別是對于程序員和 Linux 系統(tǒng)管理員。例如,如果您想找到兩個源代碼文件之間的差異來開發(fā)補(bǔ)丁,那么您需要一個文件比較工具來簡化這個過程。Linux 中有幾個命令行工具可用于比較兩個文件。其中,diff 是一個非常流行的命令行實(shí)用程序,它提供了各種選項(xiàng)來獲取兩個文件之間的差異。
在這篇文章中,我們將向您展示如何在 Linux 終端中比較兩個文件。
先決條件
- 運(yùn)行 Linux 的服務(wù)器
- 在您的服務(wù)器上配置的 root 密碼
創(chuàng)建云服務(wù)器
首先,登錄到您的云服務(wù)器。創(chuàng)建一個新服務(wù)器,選擇任何具有至少 1GB RAM 的 Linux 操作系統(tǒng)。通過 SSH 連接到您的云服務(wù)器并使用頁面頂部突出顯示的憑據(jù)登錄。
基本語法
diff 命令的基本語法如下所示:
diff [OPTION] FILES
每個選項(xiàng)的簡要說明如下所示:
- -s 兩個文件相同時(shí)報(bào)告
- -c 在上下文模式下顯示輸出
- -q 僅在文件不同時(shí)報(bào)告
- -y 在兩列中顯示差異輸出
- -r 遞歸比較任何子目錄
- -i 忽略文件內(nèi)容的大小寫差異
- -w 忽略所有空格
- –ignore-file-name-case 比較文件名時(shí)忽略大小寫
- --no-ignore-file-name-case 比較文件名時(shí)考慮一種情況
在 Linux 中創(chuàng)建文件
要在 Linux 中執(zhí)行文件比較,您需要在系統(tǒng)中創(chuàng)建一些文件。
讓我們創(chuàng)建一個名為 file1.txt 的第一個文件:
添加以下內(nèi)容:
11 12 13 14 15 16 17 18 19
eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen
In this file, we added some numbers in text and numeric form
www.LinuxMI.com
再創(chuàng)建一個名為 file2.txt 的第二個文件:
添加以下內(nèi)容:
10 12 3 14 8 16 7 18 19
five twelve eight fourteen fifteen nine seventeen one ninteen
In this file, we added some numbers in text and numeric form
www.LinuxMI.com
最后讓我們創(chuàng)建第三個名為 file3.txt 的文件,其內(nèi)容類似于 file1.txt:
添加以下內(nèi)容:
11 12 13 14 15 16 17 18 19
eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen
In this file, we added some numbers in text and numeric form
www.LinuxMI.com
打印兩個文件之間的差異
至此,三個文件已準(zhǔn)備好與 diff 命令一起實(shí)際使用。
現(xiàn)在,要打印兩個名為file1.txt和file2.txt的文件之間的差異,請運(yùn)行:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff file1.txt file2.txt
您將獲得以下輸出:
1,2c1,2
< 11 12 13 14 15 16 17 18 19
< eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen
---
> 10 12 3 14 8 16 7 18 19
> five twelve eight fourteen fifteen nine seventeen one ninteen
如您所見,diff 命令省略了兩個文件之間的所有相似之處,只顯示了它們的不同之處。
如果要在上下文模式下顯示輸出,請使用-c選項(xiàng):
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -c file1.txt file2.txt
您將獲得以下輸出:
*** file1.txt 2022-05-07 22:37:23.371594485 +0800
--- file2.txt 2022-05-07 22:37:15.699594796 +0800
***************
*** 1,4 ****
! 11 12 13 14 15 16 17 18 19
! eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen
In this file, we added some numbers in text and numeric form
www.LinuxMI.com
--- 1,4 ----
! 10 12 3 14 8 16 7 18 19
! five twelve eight fourteen fifteen nine seventeen one ninteen
In this file, we added some numbers in text and numeric form
www.LinuxMI.com
使用 diff 命令查找相似文件
您可以在 diff 命令中使用 -s 標(biāo)志來檢查兩個文件是否相似。
運(yùn)行以下命令比較 file1.txt 和 file3.txt:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -s file1.txt file3.txt
您應(yīng)該看到以下輸出:
文件 file1.txt 和 file3.txt 相同
使用 Diff 命令查找不同的文件
您可以在 diff 命令中使用-q標(biāo)志來檢查兩個文件是否不同。
運(yùn)行以下命令來比較file1.txt和file2.txt:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -q file1.txt file2.txt
您應(yīng)該看到以下輸出:
文件 file1.txt 和 file2.txt 不同
在并排視圖中顯示輸出
如果您比較兩個文件并希望在并排視圖中顯示文件差異,請使用-y選項(xiàng)。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -y file1.txt file2.txt
您應(yīng)該看到以下輸出:
如果您想忽略上述輸出中兩個文件之間的相似性,請運(yùn)行以下命令:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -y --suppress-common-lines file1.txt file2.txt
您應(yīng)該看到以下輸出:
結(jié)論
在這篇文章中,我們解釋了如何在 Linux 中使用 diff 命令比較兩個文件。我們還演示了幾個用例來解釋如何在不同的條件下使用 diff 命令。