0. 基礎知識:
0.1: diff用法:
diff 命令的用法
語法:diff [選項] file1 file2
該命令的功能為逐行比較兩個文字檔案,列出其不同之處。它對給出的檔案進行系統的檢查,並顯示出兩個檔案中所有不同的行,不要求事先對檔案進行排序。
說明:該命令告訴使用者,為了使兩個檔案 file1 和 file2 一致,需要修改它們的哪些行。
該命令的各選項含義如下:
-b 忽略行尾的空格,而字串中的乙個或多個空格符都視為相等。
-c 採用上下文輸出格式(提供三行上下文)。
-c n 採用上下文輸出格式(提供 n 行上下文)。
-e 產生乙個合法的 ed 指令碼作為輸出。
-r 當 file1 和 file2 是目錄時,遞迴作用到各檔案和目錄上。
例1:檔案a內容:
1234567
sam0987654321
檔案b內容:
sam10987654321
add
#diff a b
1d0
< 1234567
3c2,3
< 0987654321
---> 10987654321
> add
說明:
字母 a、d 和 c 分別表示附加、刪除和修改操作。字母(a、d和c)之前的行號是針對file1 的,其後面的行號是針對 file2 的.
在上述形式的每一行的後面跟隨受到影響的若干行,以 「<」 打頭的行屬於第乙個檔案,以 「>」 打頭的行屬於第二個檔案。
則上面結果的解釋為:
1d0
<1234567
檔案a的第1行, 檔案b的第0行。d 表示刪除。
< 表明第乙個檔案。
所以說:a要變化為b,,則需要刪除(d)的第一行-(1234567)
3c2,3
< 0987654321
---> 10987654321
> add
檔案a的第3 行, 檔案b的2,3行。c 修改
要a到b。需要修改a的第三行 0987654321 到10987654321,add.
例2:#diff a b > c
將a 到 b 的公升級檔案放到c 裡面。 a就是原始檔案,b就是目標檔案。c就是補丁檔案。
0.2: patch用法:
用法:
patch [options] [originalfile [patchfile]]
but usually just
patch -pnum
通常使用:
#patch -p0 < patchfile
patchfile很容易理解,就是diff生成出的補丁檔案。
那麼-p0, -p1是什麼意思呢?
patch會開啟patchfile. 看diff的是哪2個檔案,就會去找原始檔案。例如:
diff -unr linux-2.6.28/makefile linux-2.6.28-tcc/makefile
---linux-2.6.28/makefile
2008-12-25 08:26:37.000000000 +0900
+++ linux-2.6.28-tcc/makefile
2010-03-05 11:47:29.000000000 +0900
則patch命令就會去找linux-2.6.28/makefile。但這個檔案在哪個目錄下呢?
-p0: 表示從當前目錄去找linux-2.6.28,從這個目錄內找到makefile去做patch動作。
-p1: 表示忽略第一級目錄linux-2.6.28,直接從當前目錄去找makefile去做patch動作。
使用和製作patch檔案
字型 小 中 大 列印 原文今天上qq的時候發現eva不能用了,後來又看到了解決方法,所以想打個補丁,只是不會 後來查了查明確了,寫了個總結,分享一下,也不知道曾經有沒有這方面的東西,希望我這個不是多餘的。建立補丁檔案 code diff naur 舊的資料夾 新的資料夾 patch檔案 或者dif...
使用和製作patch檔案
字型 小 中 大 列印 原文今天上qq的時候發現eva不能用了,後來又看到了解決方法,所以想打個補丁,只是不會 後來查了查明確了,寫了個總結,分享一下,也不知道曾經有沒有這方面的東西,希望我這個不是多餘的。建立補丁檔案 code diff naur 舊的資料夾 新的資料夾 patch檔案 或者dif...
生成patch和打patch
單個檔案 diff un ori file mdf file mdf file.patch 生成patc 件 patch p0 mdf file.patch 將patch修改應用到源 patch re p0 mdf file.patch 回退patch的修改多個檔案 diff unr ori dir...