shell脚本中常用命令——diff,patch

diff 命令

  • diff 命令是用来比较两个文件或目录的不同,并且是以行为单位来比对的。一般是用在 ASCII 纯文本文件的比对上。由于是以行为比对的单位,因此 diff 通常是用在同一文件(或软件)的新旧版本差异上对比上,能够借由 diff 创建的分析档,以处理补丁(patch)功能的文件。

diff [options] target1 target2
diff file1 file2
diff direcory1 directory2

在这里插入图片描述

diff 在比较文件过程中结果读取方式

[num1 , num2][a|c|d][num3,num4]
num1,num2 表示在第一个文件中的行数
a 表示添加 ----add
c 表示更改 ----change
d 表示删除 ----delete
< 表示第一个文件中的内容 > 表示第二个文件中的内容
— 分割线
num3,num4 表示在第二个文件中的行数
例如:2,4c2,4 表示改变第一个文件中的第二行和第四行才能匹配第二个文件中
的第二行和第四行

举例:
在这里插入图片描述
意思是:删除第一个文件的2,3行才能匹配第二个文件的第一行,增加第一个文件的第四行才能匹配第2个文件的3,4行
在这里插入图片描述

diff 在比较目录过程中结果的读取

Only in directroy/: filename
directory 表示在那个目录中
filename 表示在这个目录

diff 中常用的参数

  • 通过man diff可以查看具体的参数及说明。
-b 或 --ignore-space-change不检查空格字符的不同
-B 或 --ignore-blank-lines不检查空白行
-c显示全部内文,并标出不同之处
-i 或 --ignore-case不检查大小写的不同
-P若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称
-q 或 --brief仅显示有无差异,不显示详细的信息
-r 或 --recursive比较子目录中的文件
-u以合并的方式来显示文件内容的不同

举例: -b 不检查空格
在这里插入图片描述
-B 忽略空行
在这里插入图片描述
-c 显示全部内容,并标出不同之处
在这里插入图片描述
在这里插入图片描述
-i 忽略大小写
在这里插入图片描述
-P 若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称。
在这里插入图片描述
在这里插入图片描述
-q:仅显示有无差异,不显示详细的信息
在这里插入图片描述
-r 比较子目录中的文件
在这里插入图片描述
-u 以合并的方式来显示文件内容的不同
在这里插入图片描述

patch

  • Linux patch命令用于修补文件,用于文件不同文件打布丁。这个指令常与 diff 配合使用,diff 可以用来分辨两个版本之间的差异。我们将旧的文件升级成为新的文件时,应该要怎么做?就是“先比较先旧版本的差异,并将差异档制作成为补丁文件,再由补丁文件更新旧文件”即可。也就是我们俗称的打补丁。

patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。
-b或–backup  备份每一个原始文件。在修补文件时,重命名或复制原始文件,而不是删除它
-p :后面可以接“取消几层目录”的意思。
-R :代表还原,将新的文件还原成原来旧的版本
patch [options] file.old file.path

yum install patch -y   ##安装打补丁的软件
diff -u test1 test2 > test.patch      ##生成补丁文件 test.patch 
patch -b test1 test.patch   ##修补文件test1

举例:
首先生成补丁文件:
在这里插入图片描述
对test1进行修补,-b保存源文件,可以看到生成了.org文件。test1的内容发生改变。
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值