概述
patch 是一個實用程式,它讀取由 diff 命令創建的輸出檔案(也稱為補丁檔案),並將變更應用於原始檔案。此補丁檔案通常按行記錄了哪些內容被添加、刪除或修改。patch 命令根據這些資訊修改原始檔案。在版本控制系統(如 CVS、Git 等)出現之前,它是共享程式碼變更的主要方式。
主要特點
patch 命令的主要特點如下:
- 使用 diff 命令生成的補丁檔案。
- 廣泛用於原始碼更新、設定檔變更等。
- 即使原始檔案與補丁檔案不完全匹配,也能檢測並應用部分變更。
- 還提供還原(reverse)變更內容的功能。
主要選項
我們根據目的將常用的 patch 命令選項分組。
1) 패치 적용 및 취소
2) 도움말
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`patch` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
透過 patch 命令的各種使用範例來學習其功能。
應用補丁檔案
patch -p1 -i my_changes.patch
使用 my_changes.patch 檔案將變更應用於原始檔案。使用 `-p1` 選項忽略補丁檔案的第一個目錄路徑。
還原變更
patch -p1 -R -i my_changes.patch
使用 `-R` 選項將已應用的補丁內容還原到原始狀態。用於將補丁檔案還原為原始檔案。
透過管道應用補丁
diff -u original_file.txt new_file.txt | patch -p0 original_file.txt
將 diff 命令的輸出直接透過管道(`|`)傳遞給 patch 命令,無需創建補丁檔案即可直接應用。
預覽補丁應用
patch --dry-run -p1 -i my_changes.patch
使用 `--dry-run` 選項預先查看應用補丁時將會發生什麼變化。
安裝
patch 通常預設包含在大多數 Linux 發行版中。如果缺少該套件,您可以透過以下方式安裝 `patch` 或 `diffutils` 套件。
Debian/Ubuntu
sudo apt update && sudo apt install -y patch
RHEL/CentOS/Fedora
sudo dnf install -y patch
Arch Linux
sudo pacman -S --needed patch
提示與注意事項
整理了使用 patch 命令時的注意事項。
提示
- 由 `diff -u` 生成的統一(unified)格式是最常見的補丁格式。使用此格式可提高補丁應用的成功率。
- `-p` 選項對於忽略補丁檔案中的路徑資訊非常重要。您應該檢查補丁檔案的標頭以指定正確的級別。例如,如果路徑為 `a/src/file.c`,使用 `-p1` 將補丁應用於 `src/file.c`。
- 如果補丁應用失敗,將會生成一個副檔名為 `.rej` 的檔案。此檔案包含補丁失敗的部分,您可以參考它進行手動修改。
- 在應用補丁之前,建議備份原始檔案。