本文目录一览:
diff(patch):比较两个文件之间的区别(补丁)
diff -u:将两个文件相同与不同的信息存放到指定的文件中
删除了passwd.new之后,通过patch命令恢复
因为patch命令默认会覆盖原来的文件,所以加上-b选项,将文件自动备份为以.orig为后缀的文件
patch -b 比较文件 diff文件
patch:将diff文件中的相同和与之不同信息恢复,并命名为“比较文件”
diff命令和patch命令的使用
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。-diff对比文件夹
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比较两个文件夹下的内容
使用diff命令即可
diff path1 path2
实例如下:
[root@mpf202 mao]# mkdir /mao1
[root@mpf202 mao]# mkdir /mao2
[root@mpf202 mao]# diff /mao1 /mao2
[root@mpf202 mao]# touch /mao1/test
[root@mpf202 mao]# diff /mao1 /mao2
Only in /mao1: test
[root@mpf202 mao]#
diff命令
有时候可能会需要对比两个文件的差异,生成patch,在Linux下就可以使用diff命令
只想查看两个文件的差异的话,可以使用:diff file1 file2
要讲差异生成patch的话可以使用参数-u:diff -u file1 file2 file.patch
要把补丁打到file1上的话,可以使用:patch -p0 file.patch(p后面的数字取决于你在哪一级目录下打patch,0表示当前目录,1表示上一级目录,以此类推,目录是相对于生成patch的目录而言的)-diff对比文件夹
去除补丁的话就用:patch -RE file.patch
diff后面可以跟几个常用参数说明:-u 生成patch
-r 递归对比目录中的所有文件
-a 将所有文件视为文本
-N 当递归对比目录下的文件时,一侧目录下面没有的文件可以看做是有一个对应名字的空文件,不加这个的话就只对比两头都有的文件-diff对比文件夹