diff的輸出格式分為傳統格式和統一格式
1)diff的傳統格式輸出.
############################################
cat before.txt
輸出:this is a line to be deleted
this is a line that will be changed
this is a line that will be unchanged
cat after.txt
輸出:
this is a line that has been changed
this is a line that will be unchanged
this is a line that has been added
############################################
diff before.txt after.txt
輸 出:
1,2c1
< this is a line to be deleted
< this is a line that will be changed
---> this is a line that has been changed
3a3> this is a line that has been added
############################################
注釋:傳統格式的輸出
1,2c1是指替換第1個檔案的第1,2行到第2個檔案的第2行,這裡的1,2是指第1個檔案的第1,2行,c是替換的意思,最後的1是第2個檔案的第1行
《號是指第1個檔案更改或刪除的行
---號是分割兩個檔案
>號是第2個檔案中增加或刪除的行
3a3是指將第2個檔案的第3行插入到第乙個檔案的第3行
也就是說第1個檔案的:
< this is a line to be deleted
< this is a line that will be changed
被替換成第2個檔案的:
> this is a line that has been changed
由於第1個檔案的第3行和第2個檔案的第2行一致,所以不做修改.
由於第2個檔案的第3行是第1個檔案所不具有的,所以在第1個檔案的最後一行增加:
> this is a line that has been added
2)patch命令的應用
用diff的傳統格式輸出:
#################################
diff before.txt after.txt >mypatch.txt
#################################
用patch修補before.txt檔案,使before.txt和after.txt一致.
#################################
cat mypatch.txt |patch before.txt
輸出:patching file before.txt
#################################
比較兩個檔案,現在是一致的了.
#################################
cmp before.txt after.txt
#################################
用patch命令恢復before.txt.
#################################
patch -r before.txt old/two
echo "this is two. it changed.">new/two
echo "this is three. it's new" > new/three
##########################################
建立修補檔案
##########################################
diff -nur old/ new/ >mypatch.diff
##########################################
注:-r選項按照檔案目錄遞迴建立修補檔案.
-u還是統一模式
-n是指當diff遇到乙個只存在於兩個樹中的乙個樹中的檔案時,預設情況下跳過檔案並且列印乙個警告到stderr.
這個行為可以通過-n選項來更改,這也導致了diff認為丟失的檔案實際上是存在的,但它是空的.採用這種方式,
乙個修補檔案可以包括已經建立的檔案.然後應用修補程式建立新的檔案.
##########################################
more mypatch.diff
輸出:diff -nur old/three new/three
--- old/three 1970-01-01 08:00:00.000000000 +0800
+++ new/three 2009-06-20 06:55:34.000000000 +0800
@@ -0,0 +1 @@
+this is three. it's new
diff -nur old/two new/two
--- old/two 2009-06-20 06:55:08.000000000 +0800
+++ new/two 2009-06-20 06:55:21.000000000 +0800
@@ -1 +1 @@
-this is two. it will change.
+this is two. it changed.
##########################################
注釋:diff -nur old/three new/three是指下面比較old/three new/three兩個檔案.
因為沒有old/three檔案,所以在old/three中增加+this is three. it's new
diff -nur old/two new/two是指下面比較old/two new/two兩個檔案
因為old/two與new/two的第3行不一致,所以刪除this is two. it will change.增加this is two. it changed.
打補丁到old目錄,新建old/three以及更改old/two
##########################################
patch --dir old< mypatch.diff
ls -l old/
輸出:one three two
##########################################
恢復old目錄的內容,包括刪除old/three,以及恢復old/two檔案
##########################################
patch --dir old -r >>>>>> you.c
}########################################
注釋:以上的格式,同cvs update,需要人工合併檔案的格式是一致的.
linux diff 命令詳解
首頁 講述 我與51cto不得不說的故事 部落格互動專題 之 2009,痛並快樂著的it人 2009 02 13 14 01 37 標籤 linux diff 命令 推送到技術圈 功能說明 比較檔案的差異。語 法 diff abbcdefhilnnppqrsttuvwy 行數 c 行數 d 巨集名稱...
Linux diff命令詳解
linux中比較檔案或者資料夾差異,經常用到diff命令,先解釋如下。用法 diff 選項 files 功能 逐行比較檔案。常用選項說明 i ignore case 忽略檔案內容大小寫的區別。ignore file name case 忽略檔名大小寫的區別。no ignore file name c...
linux diff具體解釋
diff是unix系統的乙個非常重要的工具程式。它用來比較兩個文字檔案的差異,是 版本號管理的基石之中的乙個。你在命令列下,輸入 diff 變動前的檔案 變動後的檔案 diff就會告訴你,這兩個檔案有何差異。它的顯示結果不太好懂,以下我就來說明,怎樣讀懂diff。一 diff的三種格式 因為歷史原因...