Linux文件比对工具,Linux diff的用法,Linux补丁制作,patch用法
diff通常在于比对同个文件不同版本之间的差异,不同文件没意义,因为差异都会出来
用法
- diff [-bBi] from-file to-file
-b忽略一行当中多个空白符号的差异 例如about me about me
-B 忽略空白的差异
-i 忽略大小写差异
例 查看当前目录下的一个文件不同版本
- [root@localhost paswd]# diff ./pass.old ./pass.new
- 4d3
- < adm:x:3:4:adm:/var/adm:/sbin/nologin
- 6c5
- < sync:x:5:0:sync:/sbin:/bin/sync
- ---
- > abcedfefsd
4d3 左边的第四行被删除了 基准是右边第三行
下面是被删除的文件
6c5 左边文件的第六行被替换了 是右边文件的第五行
被替换内容
diff也可以比较目录下的差异文件
例 比较不同运行级别里的差异
- [root@localhost paswd]# diff /etc/rc0.d/ /etc/rc5.d/
- Only in /etc/rc0.d: K90network
- Only in /etc/rc5.d: S10network
这样会显示出不同文件夹的差异
cmp 以字节为单位比较文件差异
-l将所有不同的都比较出来,默认只会比较第一个不同点
例 比较新旧两个文件
- [root@localhost paswd]# cmp ./pass.old ./pass.new
- ./pass.old ./pass.new differ: char 106, line 4
第四行第106个字符
利用diff生成补丁文件
再进行比较之后想更新旧文件与新文件的差异 可以依靠补丁文件
- diff -Naur from-file to-file > ***.path
例 比较相同文件不同版本 并生成补丁文件
- [root@localhost paswd]# diff -Naur ./pass.old ./pass.new > buding.path
- [root@localhost paswd]# ls
- buding.path pass.new pass.old
利用patch工具更新补丁
- patch [-R] [-pN] 补丁文件
-R 还原
-p 更新
N为删除几层目录
例 更新补丁
- [root@localhost paswd]# patch -p0 < buding.path
- patching file ./pass.old
- [root@localhost paswd]# ll ./*
- -rw-r--r--. 1 root root 479 Mar 28 17:29 ./buding.path
- -rw-r--r--. 1 root root 2246 Mar 28 17:17 ./pass.new
- -rw-r--r--. 1 root root 2246 Mar 28 17:35 ./pass.old
两个文件更新成一样了
</div>