diff和patch配合打补丁
2020-03-23 本文已影响0人
陈公子ks
一般程序都会出现漏洞,目前主要使用diff和patch对程序进行打补丁。
在Linux中,我们使用diff可以生成补丁文件,然后patch命令对其将进行打补丁。
为了做实验,我们在一个目录下创建两个脚本
# vim test1.sh
#!/bin/bash
echo "hello world"
# vim test2.sh
#!/bin/bash
echo "hello the world"
echo "test file"
diff -u test1.sh test2.sh
diff告诉我们,怎么修改成第一文件得到第二个文件。
diff命令常用选项:
-u 输出统一内容的头部信息(打补丁使用),计算机知道是哪个文件需要修改
-r 递归对比目录中的所有资源(可以对比目录)
-a 所有文件视为文本(包括二进制程序)
-N 无文件视为空文件(空文件怎么变成第二个文件)
-N选项备注说明:
A目录下没有txt文件,B目录下有txt文件
diff比较两个目录时,默认会提示txt仅在B目录有(无法对比差异,修复文件)
diff比较时使用N选项,则diff会拿B下的txt与A下的空文件对比,补丁信息会明确说明如何从空文件修改后变成txt文件,打补丁即可成功!
diff -u test1.sh test2.sh > test.sh
生成补丁文件
patch -p0 < test.sh
使用patch命令为代码打补丁
patch命令选项说明:
patch -pnum(其中num为数字,指定删除补丁文件中多少层路径前缀)
如原始路径为/u/howard/src/blurfl/blurfl.c
-p0 则整个路径不变
-p1 则修改路径为u/howard/src/blurfl/blurfl.c
-p4 则修改路径为blurfl/blurfl.c
-R(reverse)反向修复,-E修复后如果文件为空,则删除该文件