zoukankan      html  css  js  c++  java
  • diff和patch命令(1)

    1.  diff是对两个集合的差运算,patch是对两个集合的和运算。

    2.  diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录,如果我们希望递归执行,需要使用-r参数。

    **diff

    -b :忽略一行当中,仅有多个空白的差异(例如 "about me" 于 "about    me"视为相同。
    -B :忽略空白行的差异。
    -i :忽略大小写的不同

    [root@www test]# diff passwd.old passwd.new
    4d3 <==左边第四行被删除 (d) 掉了,基准是右边癿第三行
    < adm:x:3:4:adm:/var/adm:/sbin/nologin <==这边列出左边(<)档案被删除
    癿那一行内容
    6c5 <==左边档案的第六行被取代 (c) 成右边档案的第五行
    < sync:x:5:0:sync:/sbin:/bin/sync <==左边(<)档案第六行内容
    ---
    > no six line <==右边(>)档案第五行内容  

    其他模式还有"增加"(a,代表 addition),如4a4。

    **patch

    diff是用来分变两个版本之间的差异,要将旧的档案升级成新的档案需要;

    先比较新旧版本的差异,并将差异制作成补丁档,再由补丁档更新旧档案

    • 建立patch文件
    • 范例一:以 /tmp/test 内癿 passwd.old 不 passwd.new 制作补丁档案
      [root@www test]# diff -Naur passwd.old passwd.new > passwd.patch
      [root@www test]# cat passwd.patch
      --- passwd.old 2009-02-10 14:29:09.000000000 +0800 <==新旧档案癿信
      息
      +++ passwd.new 2009-02-10 14:29:18.000000000 +0800
      @@ -1,9 +1,8 @@ <==新旧档案要修改数据癿界定范围,旧档在 1-9 行,新
      檔在 1-8 行
      root:x:0:0:root:/root:/bin/bash
      bin:x:1:1:bin:/bin:/sbin/nologin
      daemon:x:2:2:daemon:/sbin:/sbin/nologin
      -adm:x:3:4:adm:/var/adm:/sbin/nologin <==左侧档案删除
      lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      -sync:x:5:0:sync:/sbin:/bin/sync <==左侧档案删除
      +no six line <==右侧新档加入
      shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      halt:x:7:0:halt:/sbin:/sbin/halt
      mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    • 更新与还原
      [root@www ~]# patch -pN < patch_file <==更新
      [root@www ~]# patch -R -pN < patch_file <==还原
      选项不参数:
      -p :后面可以接『取消几层目彔』的意思。
      -R :代表还原,将新的文件还原成原本的版本。
      范例二:将刚刚制作出来的 patch file 用来更新旧版数据
      [root@www test]# patch -p0 < passwd.patch
      patching file passwd.old
      [root@www test]# ll passwd*
      -rw-r--r-- 1 root root 1929 Feb 10 14:29 passwd.new
      -rw-r--r-- 1 root root 1929 Feb 10 15:12 passwd.old <==档案一模一样!
      范例三:恢复旧档案内容
      [root@www test]# patch -R -p0 < passwd.patch
      [root@www test]# ll passwd*
      -rw-r--r-- 1 root root 1929 Feb 10 14:29 passwd.new
      -rw-r--r-- 1 root root 1986 Feb 10 15:18 passwd.old
      # 档案就这样恢复成为旧版本啰
  • 相关阅读:
    SQL Server 索引基本概念与优化
    将Heap RID转换成RID格式
    有关DeadLock的文章列表
    sql报字段过大的错误解决方法
    查询当天数据(mysql)
    cookie和session的区别
    get和post的区别
    jq点击切换按钮最简洁代码
    js提示确认删除吗
    thinkphp解决分页后序列号自增的问题
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5500046.html
Copyright © 2011-2022 走看看