Chinaunix首页 | 论坛 | 博客
  • 博客访问: 838248
  • 博文数量: 489
  • 博客积分: 475
  • 博客等级: 下士
  • 技术积分: 3087
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 16:28
文章分类

全部博文(489)

文章存档

2013年(7)

2012年(301)

2011年(181)

分类:

2012-06-05 12:39:24

                                         diff比较命令

1.作用:比较2个文件,并生成补丁文件

2.格式

       diff[选项] 文件1  文件2

 

主要参数

       选项                     参数含义

      -r                     对目录进行递归处理

       -q                   只报告文件是否有不同,不输出结果

       -e,-ed             命令格式

       -f                    RCS(修订控制系统) 命令简单格式

       -c,--context    旧版上下文格式

       -u,--unified      新版上下文格式

       -Z(大写)        调用compress来压缩归档文件,与-x联用时调用compress完成解压缩

 

 

文件一:

//hello1.c

#include

int main()

{

       printf("Hello!Today is my birthday!\n");

       return 0;

}

文件二

//hello2.c

#include

int main()

{

       printf("Hello!Today is your birthday!\n");

       return 0;

}

 

1.用旧版上下文比较

在显示有差别的同时还显示该行的上下3,区别的地方用“”标出




2.新版的上下文格式进行比较仅把不同的地方分别列出                    
 

 
3.命令格式进行比较                                                   

 

                                             

-e选项的命令符表示:若要把hello1.c变为hello2.c,就需要把hello1.c的第4行,改为图上显示的“printf(“Hello! Today is your birthday!\n”);” 

 

 

-f –e 显示的内容基本相同,只是数字和字母的顺序调换了,即4c---->c4                  

 

4.在diff的选项缺省下,如图:

说明了如何把hello1.c转化为hello2.c的方法,通过“4c4”实现。即把hello1.c的第4行更改为hello2.c的第4行。

 

5.创建补丁文件

  创建补丁和缺省的内容是一样的。

注:也可以用旧版上下文格式进行创建:

       diff –c hello1.c hello2.c >hello.patch

 

6. -q       选项只报告文件是否有不同,不输出结果

 
 

       Path命令

1.       作用:与diff配合使用,把生成的补丁应用到代码上

2.       格式

patch [选项]  [patch的文件 [patch文件]]

       常用格式:  patch  -pnum [patch文件]

 

常见参数

       选项                                   参数含义

        -pnum                 剥离文件名中的前num个目录成分

-b                       生成备份

        -d                       dir设置为解释补丁文件名的当前目录

        -e                        把输入的补丁文件看作是ed脚本

       -t                        在执行过程中不要求任何输入

        -v                       显示patch的版本号

 

 

-pnum的含义:去掉num”/”。例如有路径 home/mp/install/bin

p1代表mp/install/bin,去掉1”/”

p2代表install/bin, 去掉2”/”

p3代表bin, 去掉3”/”

 

成功例子

补丁例子:用旧版上下文创建补丁,然后打补丁

 

失败例子

# patch hello1.c < hello.patch

(Stripping trailing CRs from patch.)

patching file hello1.c

Hunk #1 FAILED at 4.

1 out of 1 hunk FAILED -- saving rejects to file hello1.c.rej

具体如图

Hello1.c.rej :从这个文件可以知道哪里没打补丁 ,从而手动打上补丁

失败的原因:不能识别补丁文件的格式,,当他不能识别时,可以使用-c/-e/-n/-u指定输入的补丁文件格式。由于只有GNU patch可以创建和读取新版上下文格式的patch文件。所以,除非确定补丁所面向的是使用gnu工具的用户,否则应该使用旧版上下文格式来生成补丁文件

网页显示不清晰,源文件如下(只是为了方便自我查找,勿抄袭,如出错,概不负责)

文件: diff-patch.rar
大小: 66KB
下载: 下载

阅读(679) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~