diff命令和patch命令的使用

diff命令和patch命令的使用,第1张

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 命令是 Linux 上比较重要的命令行工具,用于比较文本内容,并找到不相同的地方, diff 在命令行中打印每一行的改动之处。 diff 程序的输出被称为补丁( patch ),在 Linux 系统中还有一个 patch 程序,可以根据 diff 的输出,将文件内容更新为另一个文件内容, diff 是版本控制工具不可或缺的一部分。

diff 命令能比较单个文件或者目录内容。

如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。

如果指定比较的是目录的的时候, diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

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

上面的 “3c3” 和 “8c8” 表示 log2014.log 和 log20143.log 文件在 3 行和第 8 行内容有所不同; "11,12d10" 表示第一个文件比第二个文件多了第 11 和 12 行。

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

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

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

这种方式在开头两行作了比较文件的说明,这里有三中特殊字符:

“+” 比较的文件的后者比前着多一行

“-” 比较的文件的后者比前着少一行

“!” 比较的文件两者有差别的行

它的第一部分,也是文件的基本信息:

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

+++ log2013.log 2012-12-07 16:36:26.000000000 +0800

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

第二部分,变动的位置用两个@作为起首和结束。

@@ -1,12 +1,10 @@

前面的 "-1,12" 分成三个部分:减号表示第一个文件(即 log2014.log ),"1"表示第 1 行,"12"表示连续 12 行。合在一起,就表示下面是第一个文件从第 1 行开始的连续 12 行。同样的, "+1,10" 表示变动后,成为第二个文件从第 1 行开始的连续 10 行。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11084095.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存