類似 comm 命令,diff 命令被用來監測檔案之間的差異。然而,diff 是一款更加複雜的工具,它支援許多輸出格式,並且一次能處理許多文字檔案。軟體開發員經常使用 diff 程式來檢查不同程式原始碼版本之間的更改,diff 能夠遞迴地檢查原始碼目錄,經常稱之為原始碼樹。diff 程式的乙個常見用例是建立 diff 檔案或者補丁,它會被其它程式使用,例如 patch 程式(我們後面會講到),來把檔案從乙個版本轉換為另乙個版本。
diff 在命令列中列印每乙個行的改動,並且 diff 是 svn、cvs、git 等版本控制工具不可或缺的一部分。diff 命令是 differential 的縮寫。
(1)命令格式
diff [選項] 檔案
(2)常用引數引數
描述-c
上下文模式,顯示全部內文,並標出不同之處
-u統一模式,以合併的方式來顯示檔案內容的不同
-a只會逐行比較文字檔案
-n在比較目錄時,若檔案 a 僅出現在某個目錄中,缺省會顯示:only in 目錄。 若使用-n 引數,則 diff 會將檔案 a 與乙個空白的檔案比較
-r遞迴比較目錄下的檔案
(3)常用範例
例一:顯示 file1.txt 和 file2.txt 兩個檔案的差異,可以使用如下命令:
上面結果顯示中的「2d1」表示 file1.txt 檔案比 file2.txt 檔案多了第一行(即file1.txt中多乙個b而file2.txt中少乙個b 所以第二位置b多乙個),「4c3,4」表示 file1.txt 檔案的第四行和 file2.txt 檔案的第
三、四行不同。
例二:從上面例一的顯示結果可以知道,file1.txt 和 file2.txt 兩個檔案的差異不易直**出,可以使用上下文模式顯示,可以使用如下命令:
這個輸出結果以兩個檔名和它們的時間戳開頭。第乙個檔案用星號做標記,第二個檔案用短橫線做標記。縱觀列表的其它部分,這些標記將象徵它們各自代表的檔案。
*** 1,4 *** 表示第乙個檔案中第一行到第四行的文字行。
--- 1,4 --- 表示第二個檔案中第一行到第四行的文字行。
三種特殊字元:
+ 新增行,這一行將會出現在第二個檔案內,而不是第乙個檔案內
- 刪除行,這一行將會出現在第乙個檔案中,而不是第二個檔案內
! 更改行,將會顯示某個文字行的兩個版本,每個版本會出現在更改組的各自部分
這些特殊字元很容易混淆,實際上記住一點就行:所有操作目的是將第乙個檔案變成第二個檔案。
例三:檢視 file1.txt 和 file2.txt 兩個檔案的差異,使用統一模式顯示,可以使用如下命令:
上下文模式和統一模式之間最顯著的差異就是重複上下文的消除,這就使得統一模式的輸出結果要比上下文模式的輸出結果簡短。
@@ -1,4 +1,4 @@ 表示在在更改組中描述的第乙個檔案中的文字行和第二個檔案中的文字行。
特殊字元:
diff指令使用
a bcb.dat中的內容如下 a cd我們用diff命令實現兩個檔案的對比 root 45935ca24ed8 shell diff u a.dat b.dat a.dat 2020 03 04 14 39 55.880535686 0000 b.dat 2020 03 04 14 40 09.6...
Linux面試指令 cp指令
cp 命令用來複製檔案或者目錄,是 linux 系統中最常用的命令之一。一般情況下,shell 會設定乙個別名,在命令列下複製檔案時,如果目標檔案已經存在,就會詢問是否覆蓋,不管你是否使用 i 引數。但是如果是在 shell 指令碼中執行 cp 時,沒有 i 引數時不會詢問是否覆蓋。這說明命令列和 ...
Linux面試指令 nl指令
nl 命令在 linux 系統中用來計算檔案中行號。nl 可以將輸出的檔案內容自動的加上行號。其預設的結果與 cat n 有點不太一樣,nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。nl 命令是 number of lines 的縮寫。1 命令格式 nl 選項 檔案 2...