linux文件比较工具diff-关于参数-pN的设置方法

非纯文本文件比较可用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得值可以借鉴此方法来更新补丁文件