如何在 Linux 中使用 diff 命令


簡介

Linux 作業系統基於一套強大的命令列工具,允許使用者輕鬆管理和控制系統。最強大和最廣泛使用的命令列實用程式之一是“diff”命令。Linux 中的“diff”命令用於逐行比較兩個檔案的內容,並顯示它們之間的差異。此命令列實用程式對於開發人員和系統管理員識別程式碼或配置檔案的更改至關重要。在本文中,我們將仔細研究 diff 命令及其各種選項和使用場景。我們還將提供易於理解的示例,以幫助您瞭解如何有效地使用 diff 命令。

比較兩個檔案

diff 命令最基本的使用方法是比較兩個檔案的內容。此命令的語法如下所示:

$ diff file1 file2

例如,假設我們在當前目錄中擁有兩個名為“file1.txt”和“file2.txt”的檔案。我們可以透過執行以下命令來比較這兩個檔案的內容:

$ diff file1.txt file2.txt
2c2
< line 2
---
> line 2 modified

命令輸出將顯示兩個檔案之間的任何差異,每個檔案獨有的行前面將加上“+”或“-”。在此示例中,“file2.txt”的第二行已修改,如輸出開頭處的“c”所示。

比較目錄

diff 命令也可用於比較兩個目錄的內容。此命令的語法如下所示:

$ diff -r directory1 directory2

例如,假設我們在當前目錄中擁有兩個名為“dir1”和“dir2”的目錄。我們可以透過執行以下命令來比較這兩個目錄的內容

$ diff -r dir1 dir2
diff -r dir1/file1.txt dir2/file1.txt
2c2
< line 2
---
> line 2 modified

“-r”選項告訴diff遞迴比較目錄的內容,這意味著它還將比較任何子目錄的內容。在此示例中,輸出顯示“dir2”中的檔案“file1.txt”已更改,更改與之前相同。

忽略空格

預設情況下,diff 命令將把任何空格更改視為差異。但是,有時我們可能希望忽略這些更改,而只比較檔案的有效內容。“--ignore-space-change”選項可用於忽略空格更改。

例如,假設我們在當前目錄中擁有兩個名為“file1.txt”和“file2.txt”的檔案,“file2.txt”包含額外的空格。

$ diff --ignore-space-change file1.txt file2.txt

在此示例中,輸出為空白,表示忽略空格更改後,兩個檔案之間沒有差異。

使用特定格式進行比較

diff 命令也可用於以特定格式比較檔案。“--strip-trailing-cr”選項可用於忽略行尾的回車符。例如,假設您在當前目錄中擁有兩個名為“file1.txt”和“file2.txt”的檔案,“file2.txt”在每行末尾都包含額外的回車符。

$ diff --strip-trailing-cr file1.txt file2.txt

在此示例中,輸出為空白,表示忽略每行末尾的回車符後,兩個檔案之間沒有差異。

解讀輸出

瞭解如何解讀diff 命令的輸出非常重要。輸出由以“<”開頭表示第一個檔案,以“>”開頭表示第二個檔案,對應於每個檔案的行號,以及表示如何更改第一個檔案以匹配第二個檔案的特殊符號(例如“a”表示新增,“c”表示更改,“d”表示刪除)的線組成。

“-c”選項也可用於以上下文的方式顯示檔案之間的差異,方法是在不同的行周圍顯示幾行上下文。這可以使您更容易理解兩個檔案之間所做的更改。

結論

diff 命令是用於比較 Linux 中兩個檔案或目錄內容的強大工具。它可用於識別檔案之間的差異、忽略空格更改以及以特定格式比較檔案。藉助各種可用選項,diff 命令可以自定義以適應各種用例,使其成為開發人員和系統管理員必不可少的工具。

更新於: 2023年1月20日

7K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告