美文网首页
文件比较工具

文件比较工具

作者: epiiplus1equal0 | 来源:发表于2019-01-22 14:57 被阅读0次

    同一个软件的不同版本之间, 比较配置文件与源文件的差异

    1. diff

    通常是比较同一的ASCII纯文本文件(软件)之间的差异, 以行为单位

    diff -bBi old new
    -b: 忽略一行中仅有多个空白的区别, 例如"about me"与"about    me"视为相同
    -B: 忽略空白行的区别
    -i: 忽略大小写的不同
    old: 欲比较文件的文件名
    new: 目的比较文件的文件名
    #注: old与new可以用"-"替换, 这个"-"表示standinput之意
    
    diff -Naur old new > diff_old_new.patch #一般用这个命令生成后缀为.patch的补丁文件
    -N: 在比较目录时, 若文件A仅出现在某个目录中, 预设会显示: Only in 目录: 文件A 若使用-N参数, 则diff会将文件A与一个空白的文件比较
    -a: 将两个文件视为ASCII文件进行比较
    -u: 以合并的方式来显示文件内容的不同
    -r: ——recursive, 递归的比较子目录中的内容
    
    #实例: 比较passwd.old与passwd.new的区别
    # old中的内容:
    # abcd
    # new中的内容:
    # 
    # abcdef
    diff old new
    1c1,2    #左边文件中的第一行被右边文件的第1, 2行替换了
    < abcd   #这是左边文件的内容
    ---
    >        #右边文件的第一行内容
    > abcdef #右边文件的第二行内容
    
    diff from_dir to_dir #还可以比较两个不同目录中的内容
    diff /etc/rc3.d/ /etc/rc5.d/
    Only in /etc/rc3.d/: K00rgmanager
    Only in /etc/rc5.d/: K01rgmanager
    

    2. cmp

    比较非纯文本文件, 例如二进制文件 - compare two files byte by byte, 以字节为单位

    cmp [-s] file1 file2
    -s: --silent output nothing, yield exit status only #yield: v.产生, 放弃, 屈服 n.产量
    
    cmp old new 
    old new differ: byte 1, line 1
    

    3. patch

    先比较新旧文件的区别, 再生成补丁文件, 最后将补丁文件更新旧文件

    如果配合修补文件的方式则能一次修补大批文件, 这也是Linux系统核心的升级方法之一

    diff -Naur old new > diff_old_new.patch
    patch -pN old diff_old_new.patch #更新旧文件, -p选项的意思为拿掉几个斜线(/)
    patch -R -pN old diff_old_new.patch #将更新后的文件还原
    

    下面是非常详细的关于-p选项的用法说明, 个人觉得解释地很清楚:

    reference: https://www.jb51.net/article/98185.htm

    相关文章

      网友评论

          本文标题:文件比较工具

          本文链接:https://www.haomeiwen.com/subject/odgljqtx.html