您的位置:首页 > 运维架构 > Linux

每天回顾linux命令(diff)

2017-10-25 23:43 344 查看
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<
dfd7
/span>:/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


参数

指定要比较的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: