詳解 Linux 中的 diff 命令及示例
文件比較在 Linux 中起著重要的作用,特別是對(duì)于程序員和 Linux 系統(tǒng)管理員。例如,如果您想找到兩個(gè)源代碼文件之間的差異來(lái)開(kāi)發(fā)補(bǔ)丁,那么您需要一個(gè)文件比較工具來(lái)簡(jiǎn)化這個(gè)過(guò)程。Linux 中有幾個(gè)命令行工具可用于比較兩個(gè)文件。其中,diff 是一個(gè)非常流行的命令行實(shí)用程序,它提供了各種選項(xiàng)來(lái)獲取兩個(gè)文件之間的差異。
在這篇文章中,我們將向您展示如何在 Linux 終端中比較兩個(gè)文件。
先決條件
- 運(yùn)行 Linux 的服務(wù)器
- 在您的服務(wù)器上配置的 root 密碼
創(chuàng)建云服務(wù)器
首先,登錄到您的云服務(wù)器。創(chuàng)建一個(gè)新服務(wù)器,選擇任何具有至少 1GB RAM 的 Linux 操作系統(tǒng)。通過(guò) SSH 連接到您的云服務(wù)器并使用頁(yè)面頂部突出顯示的憑據(jù)登錄。
基本語(yǔ)法
diff 命令的基本語(yǔ)法如下所示:
diff [OPTION] FILES
每個(gè)選項(xiàng)的簡(jiǎn)要說(shuō)明如下所示:
- -s 兩個(gè)文件相同時(shí)報(bào)告
- -c 在上下文模式下顯示輸出
- -q 僅在文件不同時(shí)報(bào)告
- -y 在兩列中顯示差異輸出
- -r 遞歸比較任何子目錄
- -i 忽略文件內(nèi)容的大小寫(xiě)差異
- -w 忽略所有空格
- –ignore-file-name-case 比較文件名時(shí)忽略大小寫(xiě)
- --no-ignore-file-name-case 比較文件名時(shí)考慮一種情況
在 Linux 中創(chuàng)建文件
要在 Linux 中執(zhí)行文件比較,您需要在系統(tǒng)中創(chuàng)建一些文件。
讓我們創(chuàng)建一個(gè)名為 file1.txt 的第一個(gè)文件:
添加以下內(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)建一個(gè)名為 file2.txt 的第二個(gè)文件:
添加以下內(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)建第三個(gè)名為 file3.txt 的文件,其內(nèi)容類(lè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
打印兩個(gè)文件之間的差異
至此,三個(gè)文件已準(zhǔn)備好與 diff 命令一起實(shí)際使用。
現(xiàn)在,要打印兩個(gè)名為file1.txt和file2.txt的文件之間的差異,請(qǐng)運(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
如您所見(jiàn),diff 命令省略了兩個(gè)文件之間的所有相似之處,只顯示了它們的不同之處。
如果要在上下文模式下顯示輸出,請(qǐng)使用-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)志來(lái)檢查兩個(gè)文件是否相似。
運(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)志來(lái)檢查兩個(gè)文件是否不同。
運(yùn)行以下命令來(lái)比較file1.txt和file2.txt:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -q file1.txt file2.txt
您應(yīng)該看到以下輸出:
文件 file1.txt 和 file2.txt 不同
在并排視圖中顯示輸出
如果您比較兩個(gè)文件并希望在并排視圖中顯示文件差異,請(qǐng)使用-y選項(xiàng)。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -y file1.txt file2.txt
您應(yīng)該看到以下輸出:
如果您想忽略上述輸出中兩個(gè)文件之間的相似性,請(qǐng)運(yùn)行以下命令:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? diff -y --suppress-common-lines file1.txt file2.txt
您應(yīng)該看到以下輸出:
結(jié)論
在這篇文章中,我們解釋了如何在 Linux 中使用 diff 命令比較兩個(gè)文件。我們還演示了幾個(gè)用例來(lái)解釋如何在不同的條件下使用 diff 命令。