3.17 diff:比较两个文件的不同
3.17.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
diff命令可以逐行比较纯文本文件的内容,并输出文件的差异。
【语法格式】
diff [option] [file1] [file2]
diff [选项] [文件1] [文件2]
说明:
1)在diff命令及后面的选项和文件里,每个元素直接都至少要有一个空格。
2)只能同时比较2个文件。
【选项说明】
表3-19针对该命令的参数选项进行了说明。
表3-19 diff命令的参数选项及说明
3.17.2 使用范例
**范例3-58:**比较两个文本文件的例子。
[root@centos7 ~]# cat >test1<<EOF
> 1
> 2
> 3
> 4
> 5
> 6
> EOF
[root@centos7 ~]# cat >test2<<EOF
> 4
> 5
> 6
> 7
> 8
> EOF
[root@centos7 ~]# diff test1 test2
1,3d0 #删除文件1的第一行到第3行,删除文件2的第0行,即不删除。
< 1
< 2
< 3
6a4,5 #文件1的第1行增加下面2行文本,即文本2的第4行和第5行。
> 7
> 8
以下是命令结果说明,diff默认的显示格式有如下三种提示。
- a-add
- c-change
- d=delete
例如:在1,3d0和6a4,5中,字母d/a前面的数字是文本1的行号,字母后面的是文本2的行号。其中以“<”打头的行属于文件1,以“>”打头的行属于文件2。
**范例3-59:**并排格式输出。
[root@centos7 ~]# diff -y test1 test2 #使用-y参数就可以并排输出。
1 <
2 <
3 <
4 4
5 5
6 6
> 7
> 8
[root@centos7 ~]# diff -y -W 30 test1 test2 #如果觉得上面太宽,则可以使用-W参数指定宽度。
1 <
2 <
3 <
4 4
5 5
6 6
> 7
> 8
**范例3-60:**上下文输出格式。
[root@centos7 ~]# diff -c test1 test2 #参数-c可以上下文输出。
*** test1 2020-10-23 21:00:32.735019006 +0800
--- test2 2020-10-23 21:00:59.864019028 +0800
***************
*** 1,6 ****
- 1
- 2
- 3
4
5
6
--- 1,5 ----
4
5
6
+ 7
+ 8
命令结果说明具体如下。
-
"-"表示test2比test1少的行数。
-
"+"表示test2比test1多的行数。
**范例3-61:**统一格式输出。
[root@centos7 ~]# diff -u test1 test2 #参数-u统一格式输出。
--- test1 2020-10-23 21:00:32.735019006 +0800
+++ test2 2020-10-23 21:00:59.864019028 +0800
@@ -1,6 +1,5 @@
-1
-2
-3
4
5
6
+7
+8
**范例3-62:**比较两个目录。
[root@centos7 ~]# diff /etc/rc3.d/ /etc/rc6.d #diff不仅可以比较文件内容的区别,还能比较目录下文件的区别。
Only in /etc/rc6.d: K90network
Only in /etc/rc3.d/: S10network
3.18 vimdiff:可视化比较工具
3.18.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
vimdiff调用vim打开文件,可以同时打开2个、3个或4个文件,最多4个文件,并且会以不同的颜色来区分文件的差异。
【语法格式】
vimdiff [option] [file1] [file2]
vimdiff [选项] [文件1] [文件2]
说明:
1)在vimdiff命令及后面的选项和文件里,每个元素直接都至少要有一个空格。
2)最多对比4个文件。
3.18.2 使用范例
**范例3-63:**比较两个文本文件的例子。
[root@centos7 ~]# vimdiff test1 test2
#退出vimdiff界面需要连续执行2次退出vim的操作(:q),vim命令在后面将会有详细的讲解。因为vimdiff命令调用的是vim功能,所以退出操作和vim一致。
图3-1为对比结果。
图3-1 vimdiff对比结果