Linux下diff命令與patch命令使用

2021-07-14 11:10:06 字數 1880 閱讀 6504

1、製作補丁

diff的使用

diff可以完成比較功能,生成補丁檔案

格式:diff [option] oldfile newfile

常用的option選項有:

-n 補丁中包含整個新檔案

-a 補丁中包含二進位制檔案

預設時,diff向標準輸出列印,所以一般都重定向到檔案並以patch為字尾,也就是所謂的補丁檔案

2、打補丁

patch 命令用於打補丁,補丁檔案是使用diff產生的

patch 命令語法

patch [  -b [ -b prefix ] ] [  -f ] [ -l ] [ -n ] [ -r ] [  -s ] [  -v ] [  -c | -e | -n ] [  -d directory ] [  -d define ] [  -f number ] [  -i patchfile ] [  -o outfile ] [  -p number ] [  -r rejectfile ] [  -x number ] [ file ]

patch 命令失敗或拒絕接受補丁時,會產生乙個和原檔案同名,以".rej"為字尾的差異檔案。    當知道 -b 時,會產生乙個和原檔案同名,以".orig"為字尾的備份檔案。

常使用的 patch 引數:

-p 指定目錄級別(從路徑全稱中除去幾層目錄)

如,如果補丁檔案包含路徑名稱 /curds/whey/src/blurfl/blurfl.c,那麼:

-p 0 使用完整路徑名   -p 1 除去前導斜槓,留下 curds/whey/src/blurfl/blurfl.c。   -p 4 除去前導斜槓和前三個目錄,留下 blurfl/blurfl.c。

-d directory 打補丁前,更改當前目錄到指定目錄

-i patchfile 從指定檔案,而不是從標準輸入中讀取補丁資訊

-r 逆向補丁,這個選項在防止打錯補丁很有用處

3、注意

1、要打補丁的檔案必須是未做任何修改的(這個可以開啟補丁檔案看一下刪除的檔案的日期是否和我們要打補丁的檔案一樣就可以了)。我之前就是因為修改了廠商給的原始碼所以打補丁的時間打不進去,會出錯,後來找資料才明白不能改打補丁前的檔案。

2、還有乙個就是有的補丁要乙個乙個的打,那是補丁做成這樣的,一般廠商給說明是否需要乙個乙個的打,還直接打最後乙個版本的就ok了,但我認為乙個乙個的打的補丁要嚴謹些,因為它的每乙個補丁表示了一次功能性的修改,這樣每次都可以驗證補丁的正確性了。

4、例項

a -- 製作補丁

命令:diff -urn linux-3.4.2 linux-3.4.2-my  > linux-3.4.2-my.patch

說明:當前路徑為:./ 。

該路徑(./ )下有 linux-3.4.2 目錄,其是linux-3.4.2的原始碼壓縮包解壓所得(linux-3.4.2原始碼未做任何修改的)。

該路徑(./ )下有 linux-3.4.2-my 目錄,其是由linux-3.4.2的原始碼修改後,符合開發板正常使用的原始碼(根據linux-3.4.2原始碼修改後的)。

生成 linux-3.4.2-my.patch 補丁檔案。

b -- 打補丁

命令:patch -p1 < ../linux-3.4.2-my.patch

說明:             當前路徑為:./linux-3.4.2,進入到未做任何修改的linux-3.4.2的目錄下執行patch命令

linux下diff命令與patch命令使用

1 製作補丁 diff的使用 diff可以完成比較功能,生成補丁檔案 格式 diff option oldfile newfile 常用的option選項有 r 對目錄進行遞迴處理 u 輸出統一格式,diff有 傳統 和 統一 兩種格式,現在一般使用 統一 格式,比較而言,統一格式生成的檔案大,但包...

Linux下diff與patch命令的配合使用

在linux下,diff與patch命令配合使用可以進行簡單的 維護工作。a diff diff命令用於比較檔案的差異,可以用於製作patch檔案。但此命令引數眾多 格式多樣,所以在此僅介紹較常用的格式。例如有以下2個檔案,原始檔為old test.txt,經修改後的新檔案為new test.txt...

linux下Diff命令使用方法

1 diff命令的功能 linux中diff命令的功能為逐行比較兩個文字檔案,列出其不同之處。它對給出的檔案進行系統的檢查,並顯示出兩個檔案中所有不同的行,不要求事先對檔案進行排序。2 語法 diff options file1 file2 該命令告訴使用者,為了使兩個檔案file1和file2一致...