diff 和 patch 命令——差异比较和打补丁

差异比较

diff [-p] [-u] <文件路径> <文件路径> ——比较文件差异

   -u 参数很重要,它使得差异输出中带有上下文,而不仅仅是差异;对于C文件,使用 -p 参数可显示差异所在的函数的名称

  使用 -u 参数时,差异输出格式如下,

  • (−−−)开头的行标识的是原始文件
  • (+++)开头的行标识的是目标文件
  • (−)开头的行是只出现在原始文件中的行
  • (+)开头的行是只出现在目标文件中的行
  • @@ -1,8 +1,8 @@ 表示是原始文件从第一行开始的八行跟目标文件从第一行开始的八行在进行比较

在这里插入图片描述



diff [-r] [-u] <目录路径> <目录路径> ——比较目录差异

  默认不在子目录下进行比较,使用 -r 参数可对子目录进行递归比较,不同路径下的同名文件不会进行比较。



diff [-u] <文件路径> <文件路径> > <输出路径>——输出差异文件

  将差异输出到文件中,然后可以放心删除原始文件和目标文件中的一个,输出的差异文件可用于恢复目标文件或原始文件。



打补丁

patch <原始文件> < <差异文件>——差异文件注入(打补丁)

  将差异注入原始文件,得到目标文件。



patch -R <原始文件> < <差异文件>——撤销补丁

  使用 -R (Reverse)参数撤销差异注入,从目标文件得到原始文件。



patch -p0 < <差异文件>——从当前目录开始打补丁

  要在使用 diff 命令输出差异文件的目录开始打补丁,使用 -p0 参数,-p 参数表示剥离路径,0 表示剥离0级,假如文件路径是 dir/text/readme.txt,剥离 1 级后是 text/readme.txt,剥离 2 级后是 readme.txt。



patch -p1 < ../<差异文件>——从子目录开始打补丁

  忽略第1层目录打补丁,此时需要进入到子目录路径下,从子目录开始打补丁。如果使用 -p2 参数,则需要进入到第二层子目录,从第二层子目录开始打补丁。



注意:diff 使用 -r (recursive),而 patch 使用 -R (reverse)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值