如何在linux中對檔案應用修補程式(並建立修補程式)

Linux patch命令允許您快速、安全地將更改從一組檔案傳輸到另一組檔案。學習如何使用補丁的簡單方法。...

Linux patch命令允許您快速、安全地將更改從一組檔案傳輸到另一組檔案。學習如何使用補丁的簡單方法。

patch和diff命令

假設你的電腦上有一個文字檔案。您將從其他人處收到該文字檔案的修改版本。如何將修改後的檔案中的所有更改快速傳輸到原始檔案中?這就是patch和diff發揮作用的地方。在Linux和其他類似Unix的作業系統(如macOS)中可以找到patch和diff。

diff命令檢查檔案的兩個不同版本,並列出它們之間的差異。這些差異可以儲存在一個稱為補丁檔案的檔案中。

patch命令可以讀取修補程式檔案並將其內容用作一組指令。按照這些說明,修改後的檔案中的更改將複製到原始檔案中。

現在想象一下,這個過程發生在整個文字檔案目錄上。一氣呵成。這就是補丁的威力。

有時你不會收到修改過的檔案。你收到的只是補丁檔案。如果你可以傳送一個檔案,或者釋出一個檔案以便於下載,為什麼還要傳送幾十個檔案呢?

如何處理修補程式檔案來實際修補檔案?除了幾乎是繞口令,這也是一個好問題。我們將在這篇文章中為您介紹它。

patch命令最常用於處理軟體原始碼檔案的人員,但它同樣適用於任何一組文字檔案,不管它們的用途是什麼,原始碼與否。

相關:如何比較Linux終端中的兩個文字檔案

我們的示例場景

在這個場景中,我們在一個名為work的目錄中,該目錄包含另外兩個目錄。一個叫工作,另一個叫最新。工作目錄包含一組原始碼檔案。最新目錄儲存這些原始碼檔案的最新版本,其中一些已被修改。

為了安全起見,工作目錄是文字檔案當前版本的副本。這不是他們的唯一副本。

查詢檔案的兩個版本之間的差異

diff命令查詢兩個檔案之間的差異。它的預設操作是在終端視窗中列出修改的行。

其中一個檔名為slang.c。我們將比較工作目錄中的版本和最新目錄中的版本。

-u(unified)選項告訴diff還列出每個更改部分前後的一些未修改的文字行。這些行稱為上下文行。它們有助於patch命令精確定位必須在原始檔案中進行更改的位置。

我們提供檔名,以便diff知道要比較哪些檔案。首先列出原始檔案,然後列出修改後的檔案。這是我們向diff發出的命令:

diff -u working/slang.c latest/slang.c

如何在linux中對檔案應用修補程式(並建立修補程式)

diff生成一個輸出列表,顯示檔案之間的差異。如果檔案是相同的,則根本不會列出任何輸出。從diff看到這種型別的輸出可以確認兩個檔案版本之間存在差異,並且原始檔案需要修補。

如何在linux中對檔案應用修補程式(並建立修補程式)

**修補程式檔案

要在修補程式檔案中捕獲這些差異,請使用以下命令。這與上面的命令相同,diff的輸出重定向到一個名為俚語.patch.

diff -u working/slang.c latest/slang.c > slang.patch

如何在linux中對檔案應用修補程式(並建立修補程式)

修補程式檔案的名稱是任意的。你可以隨便叫它什麼。給它一個“.patch”副檔名是個好主意;但是,因為它確實清楚地表明瞭它是什麼型別的檔案。

要使修補程式作用於修補程式檔案並修改working/slang.c檔案,請使用以下命令。u(unified)選項讓patch知道補丁檔案包含統一的上下文行。換句話說,我們對diff使用了-u選項,所以對patch使用了-u選項。

補丁-u工作。俚語c-i級俚語.patch

如何在linux中對檔案應用修補程式(並建立修補程式)

如果一切順利,只有一行輸出告訴您patch正在修補檔案。

備份原始檔案

我們可以使用-b(backup)選項指示patch在更改修補檔案之前對其進行備份。-i(input)選項告訴patch要使用的修補程式檔案的名稱:

patch -u -b working.slang.c -i slang.patch

如何在linux中對檔案應用修補程式(並建立修補程式)

檔案像以前一樣被修補,輸出中沒有明顯的差異。但是,如果您檢視工作資料夾,您將看到名為slang.c.orig的檔案已經建立。檔案的日期和時間戳顯示slang.c.orig是原始檔案,slang.c是由patch建立的新檔案。

如何在linux中對檔案應用修補程式(並建立修補程式)

對目錄使用diff

我們可以使用diff建立一個補丁檔案,其中包含兩個目錄中檔案之間的所有差異。然後,我們可以將該修補程式檔案與patch一起使用,透過一個命令將這些差異應用於工作資料夾中的檔案。

我們將與diff一起使用的選項是我們之前使用的-u(統一上下文)選項、-r(遞迴)選項(使diff可以檢視任何子目錄)和-N(新檔案)選項。

N選項告訴diff如何處理最新目錄中不在工作目錄中的檔案。它強制diff將指令放入修補程式檔案中,以便修補程式創建出現在最新目錄中但在工作目錄中丟失的檔案。

您可以將這些選項組合在一起,以便它們使用一個連字元(-)。

請注意,我們只提供目錄名,沒有告訴diff檢視特定檔案:

diff -ruN working/ latest/ > slang.patch

如何在linux中對檔案應用修補程式(並建立修補程式)

窺視修補程式檔案

讓我們快速檢視一下補丁檔案。我們會用較少的時間來檢視它的內容。

如何在linux中對檔案應用修補程式(並建立修補程式)

檔案頂部顯示了slang.c的兩個版本之間的差異。

如何在linux中對檔案應用修補程式(並建立修補程式)

進一步向下滾動補丁檔案,我們看到它描述了另一個名為structs.h的檔案中的更改。這驗證了補丁檔案肯定包含多個檔案的不同版本之間的差異。

如何在linux中對檔案應用修補程式(並建立修補程式)

三思而後行

修補大量檔案可能會有點讓人不安,因此我們將使用--dry run選項檢查一切是否正常,然後再進行更改。

--dry run選項告訴修補程式除了實際修改檔案之外,還可以做其他事情。補丁程式將對這些檔案執行所有飛行前檢查,如果遇到任何問題,它會報告它們。不管怎樣,都不會修改任何檔案。

如果沒有報告任何問題,我們可以在不使用--dry run選項的情況下重複該命令,並自信地修補檔案。

-d(directory)選項告訴修補程式要處理哪個目錄。

請注意,我們沒有使用-i(輸入)選項來告訴修補程式哪個修補程式檔案包含來自diff的指令。相反,我們將修補程式檔案重定向到帶有<的修補程式中;。

patch --dry-run -ruN -d working < slang.patch

如何在linux中對檔案應用修補程式(並建立修補程式)

在整個目錄中,diff找到了兩個要修補的檔案。有關這兩個檔案的修改說明已透過修補程式進行檢查,未報告任何問題。

飛行前的檢查還可以,我們準備起飛了。

修補目錄

要真正地將修補程式應用於檔案,我們使用前面的命令,而不使用--dry run選項。

patch -ruN -d working < slang.patch

如何在linux中對檔案應用修補程式(並建立修補程式)

這次輸出的每一行不是以“checking”開頭,而是以“patching”開頭

沒有問題報告。我們可以編譯我們的原始碼,我們將使用最新版本的軟體。

解決分歧

這是迄今為止最簡單和最安全的使用補丁的方法。將目標檔案複製到資料夾並修補該資料夾。如果您對修補過程完成而沒有錯誤感到滿意,請將它們複製回來。

  • 發表於 2021-04-03 12:36
  • 閱讀 ( 66 )
  • 分類:網際網路

你可能感興趣的文章

骯髒的奶牛脆弱性:你需要知道的一切,以保持安全

...,我們來看看這個漏洞到底是什麼,它影響的系統,以及如何保護自己。 ...

  • 發佈於 2021-03-11 18:42
  • 閲讀 ( 47 )

使用openvpn connect將您的智慧手機連線到幾乎所有vpn

在公共場合如何保證資料的安全?您是否連線到公共Wi-Fi訊號?你查過網上銀行嗎?敏感工作或商業檔案如何? ...

  • 發佈於 2021-03-13 01:40
  • 閲讀 ( 51 )

修補電腦真的是最安全的選擇嗎?

... 如何安全修補 ...

  • 發佈於 2021-03-14 07:50
  • 閲讀 ( 51 )

是時候嘗試一些新的東西了:初級的os loki

...改進。軟體類別很容易探索。更新非常簡單。如果你知道如何在**上安裝應用程式,那麼使用AppCenter應該是小菜一碟。 ...

  • 發佈於 2021-03-16 08:21
  • 閲讀 ( 48 )

使用ubuntu定製套件推出自己的linux作業系統

...需向實時系統新增任何包,然後建立定製的發行版。看看如何**一個自定義的Ubuntu發行版,從安裝Ubuntu定製工具包到選擇包和執行實時CD。 ...

  • 發佈於 2021-03-16 21:22
  • 閲讀 ( 82 )

linux Ubuntu19.04的10個新特性及其使用方法

...19.04“Disco Dingo”就可以享受Linux核心5.0的好處。下面介紹如何在不更新的情況下在Ubuntu中升級Linux核心。 ...

  • 發佈於 2021-03-20 08:45
  • 閲讀 ( 69 )

對於新電腦使用者來說,無盡的作業系統可能是最好的linux版本

...是用來工作的,無論你是否有網際網路連線,或者你知道如何安裝軟體。 ...

  • 發佈於 2021-03-23 17:06
  • 閲讀 ( 49 )

linux和ubuntu入門

... 如果你不想重新學習如何使用電腦,吃肉桂可以幫你省去一些頭痛。它是Linux Mint中的預設桌面環境。 ...

  • 發佈於 2021-03-26 09:32
  • 閲讀 ( 60 )

關於maze勒索軟體攻擊你需要知道什麼

...況,但有一點是相同的所有勒索軟體攻擊攻擊者總是提供如何讓您的訪問返回指令。當然,唯一的問題是你必須先提供一大筆贖金。 ...

  • 發佈於 2021-03-26 17:37
  • 閲讀 ( 44 )

如何使用ipad訪問帶有伺服器訊息塊的windows或mac檔案

... 我們將向您展示如何透過iPad上的檔案應用程式直接從Mac或Windows 10計算機訪問檔案。 ...

  • 發佈於 2021-03-27 07:51
  • 閲讀 ( 60 )
d5477089g
d5477089g

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦