diff命令和patch命令的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了diff命令和patch命令的使用相关的知识,希望对你有一定的参考价值。

参考技术A

diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。

diff命令的格式一般为:

diff [参数][文件或者目录1][文件或者目录2]

例如,有文件test1和test2:

将会输出:

格式的含义如注释所示。

diff 的normal 显示格式有三种提示:

a - add

c - change

d - delete

比较常用的是以合并的方式显示两个文件的不同:

输出如:

这种输出方式输出的内容可以用于使用patch命令进行打补丁包。patch命令我们稍后再看。

diff命令也可以比较两个文件夹的不同:

例如有两个文件夹testa和test,将test1和test2放进去:

得到:

第一部分是文件的信息

"---"表示变动前的文件,"+++"表示变动后的文件。

第二部分表示变动的位置

@@ -1,11 +1,5 @@

减号表示第一个文件,后面的表示第一行起一共11行。加号表示第二个文件。后面是第一行起一共5行。

接下来的表示区别的部分。

例如:

将得到:

这种模式中

“|”表示前后2个文件内容有不同

“<”表示后面文件比前面文件少了1行内容

“>”表示后面文件比前面文件多了1行内容

我们可以先用diff命令生成patch文件。然后使用patch命令将第二个文件内容修改成第一个文件的内容。

例如上述的test1和test2:

之后test2的内容就会和test1内容一致了。

svn diff生成的patch也可以用于更新文件

命令行工具diff和patch使用简介

diff 命令

diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作(如需比较,需要配合-r参数)。pathc制作过程中常用选项如下:

diff option 源文件(夹) 目的文件(夹) 
-r:递归,设置后diff会将两个不同版本源代码目录中的所有对应文件都进行一次比较,包括子目录文件; 
-N:确保补丁文件将正确地处理已经创建或删除文件的情况; 
-u:一体化diff输出
-E, -b, -w, -B, –strip-trailing-cr 
-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称;
忽略各种空白,可参见文档,按需选用。

diff -bpurN from_file to_file > file.patch

patch 命令

patch命令被用于为开放源代码软件安装补丁程序。让用户利用设置修补文件的方式,修改,更新原始文件。如果一次仅修改一个文件,可直接在命令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。常用命令行如下:

patch -pN < file.patch

总结

单个文件

diff –uN from-file to-file >to-file.patch

patch –p0 < to-file.patch

patch –RE –p0 < to-file.patch //取消补丁

多个文件

diff –uNr from-docu to-docu >to-docu.patch

patch –p1 < to-docu.patch

patch –R –p1 <to-docu. //取消补丁

以上是关于diff命令和patch命令的使用的主要内容,如果未能解决你的问题,请参考以下文章

diff和patch命令

diff命令

命令行工具diff和patch使用简介

命令行工具diff和patch使用简介

Linux命令diff、patch

diff和patch的使用patch文件的格式解说