Linux面试指令---patch指令

patch 命令

       patch 命令被用来把更改应用到文本文件中。它接受从 diff 程序的输出,并且通常被用来把较老的文件版本转变为较新的文件版本。让我们考虑一个著名的例子。Linux 内核是由一个大型的,组织松散的贡献者团队开发而成,这些贡献者会提交固定的少量更改到源码包中。这个 Linux 内核由几百万行代码组成,虽然每个贡献者每次所做的修改相当少。对于一个贡献者来说,每做一个修改就给每个开发者发送整个的内核源码树,这是没有任何意义的。相反,提交一个 diff 文件。一个 diff 文件包含先前的内核版本与带有贡献者修改的新版本之间的差异。然后一个接受者使用 patch 程序,把这些更改应用到他自己的源码树中。使用 diff/patch 组合提供了两个重大优点:

  1. 一个 diff 文件非常小,与整个源码树的大小相比较而言。

  2. 一个 diff 文件简洁地显示了所做的修改,从而允许程序补丁的审阅者能快速地评估它。

当然,diff/patch 能工作于任何文本文件,不仅仅是源码文件。它同样适用于配置文件或任意其它文本。

准备一个 diff 文件供 patch 命令使用,GNU 文档建议这样使用 diff 命令:

diff -Naur old_file new_file > diff_file

old file 和 new file 部分不是单个文件就是包含文件的目录。这个 r 选项支持递归目录树。

(1)命令格式

         patch [选项] 补丁文件

(2)常用参数

参数 描述
-p num 忽略几层文件夹
-E 如果发现了空文件,那么就删除它
-R 取消打过的补丁

(3)常用范例

         例一:生成 file1.txt 和 file2.txt 的 diff 文件,然后应用 patch 命令更新 file1.txt 文件,可以使用如下命令:

diff  -Naur file1.txt  file2.txt > patchdiff.txt
patch < patchdiff.txt

        例二:取消上面例一打过的补丁,可以使用如下命令:

patch -R < patchdiff.txt

猜你喜欢

转载自blog.csdn.net/qq_30123335/article/details/83339319