diff命令
diff命令用来比较给定两个文件的不同。以逐行的方式,比较文本的异同处。如果该命令指定进行目录比较,则会比较目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
语法
diff (选项) (参数) 或者 diff (参数) (选项)
选项
-a 或 –test: diff预设会逐行比较文本文件,默认情况下有-a的效果
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.txt b.txt
1,2c1,2
< abc
< 123
---
> cdf
> 456
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -a a.txt b.txt
1,2c1,2
< abc
< 123
---
> cdf
> 456
-b或 –ignore-space-change:不检查空格字符的不同
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -a a.txt b.txt
1,3c1,3
< abc
< 123
< 123 456
---
> cdf
> 456
> 123 456
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -b a.txt b.txt
1,2c1,2
< abc
< 123
---
> cdf
> 456
-B或–ignore-blank-lines:不检查空白行
-c:显示全部内容,并标出不同处
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -c a.txt b.txt
*** a.txt Wed Oct 25 14:31:18 2017
--- b.txt Wed Oct 25 14:32:01 2017
***************
*** 1,4 ****
1
! abc
! 123
! 123 456
--- 1,5 ----
1
! cdf
! 456
!
! 123 456
-C<行数>或–context<行数>:和执行“-c-<行数>”指令相同
-e或–ed:此参数的输出格式可用于ed的script文件,其实就是只输出一边
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -e a.txt b.txt
2,4c
cdf
456
123 456
.
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -e b.txt a.txt
2,5c
abc
123
123 456
.
-f或-forward-ed:输出格式类似ed文件
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -f b.txt a.txt
c2 5
abc
123
123 456
.
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff -f a.txt b.txt
c2 4
cdf
456
123 456
.
-H或–speed-large-files:比较大文件时,可加快速度。
-i或-ignor-case:不检查大小写的不同
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.txt b.txt
2c2
< abc
---
> ABC
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.txt b.txt -i
root@3eb7af6247bb:/home/wzm/go/src/testdiff#
-N或-new-file:在比较目录时,若文件A仅出现在某个目录中,会显示:Only in目录,文件A 若使用-N,则diff会将文件A与一个空文件比较
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a b
Only in a: a.txt
Only in b: b.txt
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a b -N
diff -N a/a.txt b/a.txt
1,2d0
< 1
< abc
diff -N a/b.txt b/b.txt
0a1,2
> 1
> ABC
-p:若比较我文件为C语言代码文件,显示差异说着的文件名称
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c
1,2c1,2
< int Test(int a) {
< return 0
---
> void Testb(int b) {
> return 0;
4,5c4
< 123
<
---
> abc
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -p
*** a.c Wed Oct 25 15:15:29 2017
--- b.c Wed Oct 25 15:16:18 2017
***************
*** 1,5 ****
! int Test(int a) {
! return 0
}
! 123
!
--- 1,4 ----
! void Testb(int b) {
! return 0;
}
! abc
-P:和-N类似,但只有当第二个目录包含第一个目录所没有的文件时,才会将这个文件与空白做比较
-q:只显示有无差异,不显示详细信息
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -q
Files a.c and b.c differ
-r:递归比较子目录中的文件。
-s:如果无发现任何差异,仍然显示信息
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -s
Files a.c and b.c are identical
-t:输出是,将tab字符展开
-T:每行前面加上tab字符以便于对齐
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c
1c1
< 123
---
> 123
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -t
1c1
< 123
---
> 123
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -T
1c1
< 123
---
> 123
-u,-u<列数> : 以合并发方式显示文件的不同
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -u
--- a.c 2017-10-25 15:28:50.989221240 +0000
+++ b.c 2017-10-25 15:29:06.870858237 +0000
@@ -1,3 +1,3 @@
- 123
-1
-2
+ 123
+3
+4
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c
1,3c1,3
< 123
< 1
< 2
---
> 123
> 3
> 4
-v:显示版本信息
-w:忽略全部空格字符
-W<宽度> : 在使用-y参数是,指定栏宽
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y -W 50
123 | 123
1 | 3
2 | 4
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c
1,3c1,3
< 123
< 1
< 2
---
> 123
> 3
> 4
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y
123 | 123
1 | 3
2 | 4
-x<文件名或目录>:不比较选项中指定的文件和目录名
-y:以并列的方式显示文件的异同
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y
123 | 123
1 | 3
2 | 4
3 3
–help:显示帮助信息
–left-column:在使用-y参数时,若两个文件某一行内容相同,则仅在左侧栏位显示该行内容
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y
123 | 123
1 | 3
2 | 4
3 3
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y --left-column
123 | 123
1 | 3
2 | 4
3 (
–suppress-common-lines:在使用-y参数时,仅显示不同
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y
123 | 123
1 | 3
2 | 4
3 3
root@3eb7af6247bb:/home/wzm/go/src/testdiff# diff a.c b.c -y --suppress-common-lines
123 | 123
1 | 3
2 | 4
参数
指定要比较的文件