Linux - patch命令
简介
顾名思义,patch命令用于给文件打补丁。所谓补丁,即在原来的基础之上进行修改,patch能做到基于diff产生的结果,对文件进行修改。
使用方法
为了演示方便,先执行下面命令产生两个文件a.txt
和b.txt
:
$ echo Hello World A > a.txt
$ echo Hello World B > b.txt
然后使用diff
命令比较两个文件,并且输出为patch文件:
$ diff a.txt b.txt > a.patch
$ cat a.patch
1c1
< Hello world A
---
> Hello world B
这样我们就得到了一个patch文件,现在使用patch
命令将这个patch应用于a.txt
上:
$ cat a.txt
Hello world A
$ patch -p1 a.txt a.patch
patching file a.txt
$ cat a.txt
Hello world B
可以看到在执行patch
命令之后,a.txt
这个文件已经成功被修改成b.txt
的样子了。
为什么?
你要把一个文件a.txt
修改成另一个文件b.txt
,为什么直接复制b.txt
到目标位置?
注意,patching是修改内容,或者更准确地说,修改匹配的内容,而不是完全替换,如果需要修改的文件内容是:
Hello world B
not changed
那么应用上一节说的a.patch
之后,只有第一行会被修改,这不同于直接覆盖文件。
为什么不用sed
来处理?
如果是简单的一两行,确实可以使用sed
来处理,但是如果改动很多内容的话,patch
会更方便一些。