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//.c
那么:-p 0 使用完整路徑名 -p 1 除去前導斜杠,留下 curds/whey/src//.c。 -p 4 除去前導斜杠和前三個目錄,留下 /.c。
-d : 打補丁前,更改當前目錄到指定目錄
-i : 指定補丁文件,而不是從標準輸入中讀取補丁信息
-R :逆向補丁patch直接在源文件上打補丁,這個選項在防止打錯補丁很有用處
補丁的產生一般用 diff命令比較a文件和b文件
diff -Nrua a b > c.patch
如:
diff -Nrua linux-2.6.14/Makefile linux-2.6.26/Makefile >c.patchcat c.patch
--- linux-2.6.14/ 2008-07-30 16:54:20. +0800 +++ linux-2.6.26/ 2008-07-14 05:51:29. +0800 @@ -1,8 +1,8 @@ = 2 = 6 - = 14 + = 26 = -NAME= +NAME = # ** # To see a list of "make help"
--- 的文件表示將被打補丁的文件如:linux-2.6.14/ +++ 的文件表示補丁來源文件如:linux-2.6.26/
應用
ls c.patch linux-2.6.14 linux-2.6.26 cd linux-2.6.14 patch -p1 <../c.patch
如果有多個補丁要打patch直接在源文件上打補丁,則應該注意打補丁的順序!