patch的用法【轉】


什么是patch

patch即補丁之意,記錄文件中的不同,能夠與文件進行整合,從而改變文件中的內容

如何制作patch

在Linux系統中提供了diff程序,可以使用diff程序,比較文件之間的不同從而制作出patch文件

  1. 在系統中(我用的是Ubuntu)創建diff文件夾,創建test1.txt,test2.txt
mkdir diff
vi test1.txt
vi test2.txt

 

test1.txt文件內容如下

aaaa

 

test2.txt文件內容如下

aaaa
bbbb

 

  1. 使用diff命令制作patch文件
diff -Naur test1.txt test2.txt > test.patch

 

之后在當前目錄中會存在三個文件

test1.txt test2.txt test.patch

 

test.patch 文件的內容

--- test1.txt   2018-08-01 13:17:33.530350672 +0800
+++ test2.txt   2018-08-01 13:18:54.326350260 +0800
@@ -1 +1,2 @@ 
 aaaa
+bbbb

 

diff參數解釋
-N 在比較目錄時如果某個文件只出現了一次,那么在比較不同時會默認和空文件比較
-a 將所有的文件都作為普通text(之比較文本文件)
-u 以合並的方式顯示文件內容的不同
-r 如果是文件夾則進行遞歸進行比較

如何使用patch

  1. 准備好patch文件和原版本文件
    創建patch文件夾,將test1.txt 和test.patch文件拷貝進去
mkdir patch
cp test1.txt test.patch../patch/

 

  1. 執行patch命令
patch -p0 < test.patch

 

test1.txt文件內容如下

aaa
bbb

 

可以看到patch已經打進去了
參數介紹
patch命令中最常用的就是-pX這個參數
在上面我們注意到patch文件如下內容

--- test1.txt   2018-08-01 13:17:33.530350672 +0800

 

此時我們的參數為-p0,此時patch 就會在當前目錄下尋找test1.txt文件,如在在patch文件中是這樣記錄的

---a/b/test1.txt   2018-08-01 13:17:33.530350672 +0800

 

那么-p0會在當前目錄下尋找a目錄,a目錄下尋找b,之后在b中尋找test1.txt文件。
如果是 -p1,patch命令就會舍棄a,先尋找b再尋找test1.txt
如果是-p2 ,會舍棄a/b,直接尋找test1.txt
所以-pX中 X代表就是所要舍棄的層級目錄
patch還有很多參數,但是-pX是最為常用的

patch的應用場景

patch多用於系統升級,只要有一個基礎版本,以及基於這個版本的一些patch,就可以進行升級

 

轉自

patch -p0 和patch -p1的區別 | 學步園 https://www.xuebuyuan.com/zh-hant/1166329.html

patch的學習和使用 - 簡書 https://www.jianshu.com/p/1df286850317

patch命令用法 - 車子(chezi) - CSDN博客 https://blog.csdn.net/longintchar/article/details/74151042


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM