Diff命令操作简介

作者: 天花板 | 来源:发表于2016-03-09 20:33 被阅读218次

    我们通过下面这个例子来说明diff命令的简单用法。

    文件准备

    • old.txt

      111
      222
      333
      444
      555
      666
      777
      888
      999
      000

    • new.txt

      111
      1.5
      222
      2.5
      2.6
      333
      444
      555
      888
      909
      000

    1. Normal

    $ diff old.txt new.txt
    

    输出说明

    • a (add)

    1a2 在old第1行之后加入了new的第2行
    2a4,5在old第2行之后加入了new的第4,5行

    • c (change)

    9c10old中第9行修改为new第10行
    <表示old文件中的内容
    >表示new文件中的内容

    • d (delete)

    6,7d8old第6、第7行原本在new第8行之后

    2. 并排输出

    $ diff old.txt new.txt -y -W 50
    

    参数说明

    • -y 并排输出
    • -W NUM 输出列数

    输出说明

    • “|” 表示前后2个文件内容有不同
    • “<”表示后面文件比前面文件少了1行内容
    • “>”表示后面文件比前面文件多了1行内容

    3. 上下文输出

    $ diff old.txt new.txt -c
    

    参数说明

    • -c NUM

    Output NUM (default 3) lines of copied context.

    输出说明

    • “+” 比较的文件的后者比前着多一行
    • “-” 比较的文件的后者比前着少一行
    • “!” 比较的文件两者有差别的行

    4. 统一格式输出

    $ diff old.txt new.txt -u
    

    输出说明

    • "---" 表示变动前的文件
    • "+++" 表示变动后的文件
    • @@ -1,10 +1,11 @@ 变动位置

    '-'表示old.txt
    '+'表示new.txt
    '-1,10' old.txt的前10行
    '+1,10' new.txt的前11行

    5. 比较文件夹不同

    $ diff path1 path2
    

    PS : 给目录打补丁会发生覆盖

    6. 比较文件不同,产生补丁

    $ diff -ruN old.txt new.txt > log.patch
    $ cat log.patch
    

    7. 打补丁

    $ patch -p0 < log.patch
    patching file old.txt
    
    • -pNUM

    去掉默认路径中的NUM个‘/

    8. 恢复

    如果恢复打补丁之前的文件

    $ patch -RE -p0 < log.patch

    相关文章

      网友评论

      • 阿群1986:自己用过diff -Np0命令制作补丁文件,好像是对比整个源码文件夹的改动
        patch命令的选项我记不住了(需要手动加载特定补丁的场合很难遇到吧)
        阿群1986:怕麻烦可以用源代码比较工具,比如WinMerge
      • 38b0cc97245a:可以的

      本文标题:Diff命令操作简介

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