patch 檔案 和 用法

2021-06-28 13:24:02 字數 2091 閱讀 9367

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...