非纯文本文件比较可用cmp命令
第一:利用diff创建分析文件,处理补丁(patch)功能的文件
案例:多数用于同一软件的不同版本之间,比如比较配置文件和源文件的区别,生成补丁文件,执行更新,或者恢复操作
以’行‘为单位进行比较,多数用在同一文件新旧版本的比较上面
流程:复制passwd文件passwd.old,修改内容通过数据流重定向>passwd.new
利用diff -Naur 通过比对新旧文件生成补丁文件
patch 更新补丁文件,使旧文件大小和新文件大小一致,也可以通过 patch -R参数恢复旧文件更新之前的内容
1.生成新旧passwd文件
cat /etc/passwd |\
> sed -e '4d' -e '6c no six line'>passwd.new #解释查看passwd文件,利用管道符链接后面的命令删除第四行,改变第六行内容为 no six line,通过数据流重定向输入到passd.new文件内(如果文件没有,则新建,如果是>>好像表示追加,可以尝试下)
2比对新旧文件大小和内容的改变
3生成补丁文件passwd.patch
4.查看补丁文件,注意第一行文件的路径,
5更新和还原passwd.old
6.关于pathc -pN 中的N说明:
当新旧文件不在同一个目录下,继续使用p0会提示如上图提示,此时有两种方法
第一:根据实际路径情况,设置N的值,我的文件路径
/home/tmp/passwd.new? ? ? /home/tmp/test/passwd.old
如上图,补丁文件的第一行,也就是passwd.old在test目录下,但是passwd.new不在这个目录下,所以得去掉上级目录,N得值设置成1,此时补丁才能更新成功
第二种方法:尽量在同一目录下,如果就是在不同目录,可以把N值设置大一些,这样系统会列出你要更新的文件,直接复制粘贴上就可以了,如下图
N值设置5
N值设置111
如果不在同一目录,又不知道N得值可以借鉴此方法来更新补丁文件