diff和patch十分鐘指南

2021-06-28 20:05:18 字數 1277 閱讀 7230

情景一:你正嘗試從**編譯乙個軟體包,發現有人已經對**進行了小小的修改以便在你的系統上編譯。他們通過補丁的方式發布自己的成果,但是你卻不知道該如何使用它。答案是你使用乙個叫做patch(很貼切)的命令列工具將補丁應用到原始**上。 

這是乙份diff和patch的快速指南,通過講解它們最常見的用法來幫你解決上面問題。它告訴你的東西足夠讓你立刻開始使用。之後,你可以在閒暇的時候用manpage來學習diff和patch的前前後後。我總是樂意聽到你們的問題和意見。用聯絡表單跟我取得聯絡。 

用patch命令應用補丁 

要對單個檔案應用補丁,進入檔案所在的目錄並呼叫patch命令: 

patch < foo.patch 

這些命令假定補丁是以統一格式分發的,這種格式指明了補丁要應用到的檔案。如果不是,你可以在命令列裡指定檔案: 

patch foo.txt < bar.patch 

應用補丁到整個目錄(這種情況也許更常見)也是類似的,但是你必須注意設定p級別。就是說,在補丁檔案裡,需要打補丁的檔案在你電腦上的路徑名跟在建立補丁的電腦上可能不同。p級別告訴patch命令忽略掉路徑名的幾個部分以正確的識別檔案。通常p級別為1就夠了,所以你使用: 

patch -p1 < bar.patch 

執行該命令之前,你應該進入源**目錄的頂層目錄。如果補丁級別1不能正確識別任何需要打補丁的檔案,檢查補丁檔案裡的檔名。如果你看到這樣乙個檔名: 

而你當前正工作在乙個包含net/http.c的目錄,使用: 

patch -p5 < bar.patch 

總的來說,對於從路徑最開始刪除的每個路徑分隔符(斜線字元)加一,直到剩下的部分存在於你的工作目錄中。最後得到的就是p級別。 

要刪除補丁,用-r引數,例如: 

patch -p5 -r bar.patch 

使用diff建立補丁 

不論是對於單個檔案還是整個原始碼目錄,使用diff都很簡單。為單個檔案建立補丁,用下面形式: 

diff -u original.c new.c > original.patch 

為整個原始碼樹建立補丁,複製乙份原始碼樹: 

cp -r original new 

在目錄new/裡進行必要的修改,然後用下面的命令建立補丁: 

diff -rupn original/ new/ > original.patch 

這就是diff和patch入門需要的所有知識。要獲得更多的資訊用: 

man diff 

man patch

diff和patch十分鐘指南

情景一 你正嘗試從 編譯乙個軟體包,發現有人已經對 進行了小小的修改以便在你的系統上編譯。他們通過補丁的方式發布自己的成果,但是你卻不知道該如何使用它。答案是你使用乙個叫做patch 很貼切 的命令列工具將補丁應用到原始 上。這是乙份diff和patch的快速指南,通過講解它們最常見的用法來幫你解決...

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...

十分鐘的代價

2008年9月15日上午10 00,擁有158年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此重大的情況下,德國國家發展銀行在十分鐘後,居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將凍結的銀...