|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
6 t$ a( M: ]8 h$ z8 }* {
Linux diff命令用于比较文件的差异。% ?# F% V! }1 p2 Y) G' |) P0 H
: p% y4 I7 ]( G7 w/ P- Z8 Z1 J0 ~
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。) F6 D. h3 f K0 G2 E( z
5 O- m# D* E$ ~' A( N; Z语法
1 a; y( ?# J5 ~1 G& G6 _% Jdiff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]: h9 w" _+ z" @3 I# Q$ f$ |- M
参数:
t% h7 i0 l% C3 u7 J
3 O" a' f! O2 v: t-<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。8 z N+ g" T7 B
-a或--text diff预设只会逐行比较文本文件。
' ?4 I4 e% C) w( q6 }$ Y5 h6 e-b或--ignore-space-change 不检查空格字符的不同。0 X- a s( G; O* A
-B或--ignore-blank-lines 不检查空白行。
" ~ q7 K4 Q6 ~: {-c 显示全部内文,并标出不同之处。 W2 C G# m1 x6 ~
-C<行数>或--context<行数> 与执行"-c-<行数>"指令相同。
3 ?0 d% y( T3 s+ p9 D-d或--minimal 使用不同的演算法,以较小的单位来做比较。
) k0 m: u7 F- f7 u Q6 t0 |( u-D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。6 u" ~8 E& ?1 D
-e或--ed 此参数的输出格式可用于ed的script文件。* W. F& H* k* E+ P# I# x3 W
-f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。% h) u. H" [: Z! B2 y1 [
-H或--speed-large-files 比较大文件时,可加快速度。3 }# z0 t, g' G
-l<字符或字符串>或--ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
+ ^: E% z# L& c4 Y/ R! G7 Y( {-i或--ignore-case 不检查大小写的不同。
1 g* _- c' Q, W# K+ Y: V-l或--paginate 将结果交由pr程序来分页。
9 j% h# z( D3 D& ]# T-n或--rcs 将比较结果以RCS的格式来显示。
. `, u3 G6 t2 C3 C-N或--new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
. M& I* J; \5 }/ }- g: J; {" y2 YOnly in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。* w# r( {9 O, ]1 _8 t8 k$ H% E
-p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。2 p, w% {: h5 L% [ ?$ A
-P或--unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。+ R4 C4 F N$ c
-q或--brief 仅显示有无差异,不显示详细的信息。
0 I$ n7 O3 Z) A% _-r或--recursive 比较子目录中的文件。* ^0 }1 p5 G( K+ k
-s或--report-identical-files 若没有发现任何差异,仍然显示信息。
# @4 b: P U& o9 [2 a% G' p! n9 @# [-S<文件>或--starting-file<文件> 在比较目录时,从指定的文件开始比较。1 `$ Q* F6 [/ ^/ G
-t或--expand-tabs 在输出时,将tab字符展开。
, k6 _8 U/ \8 W9 V0 {6 G+ O-T或--initial-tab 在每行前面加上tab字符以便对齐。, D j- W: N% b6 |- U# Z; r. ?; |
-u,-U<列数>或--unified=<列数> 以合并的方式来显示文件内容的不同。- j2 M+ @/ P1 U+ H+ b! s) p
-v或--version 显示版本信息。/ E4 X1 K: F a! z) h9 X% E
-w或--ignore-all-space 忽略全部的空格字符。* _ e9 h8 `; ?" C2 T8 Z
-W<宽度>或--width<宽度> 在使用-y参数时,指定栏宽。6 u4 H- ~" D/ E) C+ [4 J
-x<文件名或目录>或--exclude<文件名或目录> 不比较选项中所指定的文件或目录。
3 \+ K" f# b, X7 K& h-X<文件>或--exclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
7 G* J( J7 e2 p8 `' h* Q a- V' C-y或--side-by-side 以并列的方式显示文件的异同之处。
) l9 }7 S: Z$ W* D9 X1 Q1 k: \--help 显示帮助。- R- V( A, u2 s2 a
--left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。2 c9 b) g `- p y% d
--suppress-common-lines 在使用-y参数时,仅显示不同之处。: r0 [/ ]4 b' O
实例1:比较两个文件
3 J. v2 u6 C+ f, c4 y1 Y[root@localhost test3]# diff log2014.log log2013.log % d+ N: S5 B8 F) a0 u: o6 g6 e1 n
3c3
$ q+ O3 p% l2 Q& t3 X< 2014-038 @, C7 O/ T. V7 F5 C0 l1 O" m/ r
---- Y4 ` G+ N) S) R) w
> 2013-03) k/ L8 {0 G3 q6 k X- m
8c8* @ b6 z% x* ~3 i" c
< 2013-07
% T+ F& v5 e5 k1 y7 j, _---
5 o, I/ u! ^% ^. [> 2013-08
8 {% l7 r1 a: C" Q/ [) d$ t7 e) Z11,12d10. [/ r5 H7 Z, F2 }% H: b+ B
< 2013-11+ V* [6 Q! k8 X T: n
< 2013-120 w% C% K: b4 T9 q/ O
上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。
- G. s' \7 Y( H& [3 [/ Y) }
2 B# j5 h2 D- E0 y) o实例2:并排格式输出4 O( C( S+ }: w, j9 W& h6 E
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
+ t0 h! s$ H( {1 o6 `2013-01 2013-01) u$ Y1 a; p! o% m0 C" {4 G" @
2013-02 2013-02
* P$ `6 K& A7 T6 W3 Y! [2014-03 | 2013-03: u9 v7 I) i" ?4 Y' K- x$ \( q
2013-04 2013-04: y1 R0 m+ D& S
2013-05 2013-05
3 L y. { y" Q" `7 m# ?- j2013-06 2013-06
+ r* Y. [* p+ t; k, I/ f2013-07 2013-07/ `, w7 L0 u3 W0 E/ M& X- o. A3 [
2013-07 | 2013-08
1 M, U+ D5 R `2013-09 2013-09
. A& @+ x) T, m/ f0 i2013-10 2013-10" D5 S1 ?1 F3 ?" V: n
2013-11 <
3 `* }- b8 B% ^# o& B6 W6 s7 x7 u2013-12 <
& j% u- B) t4 [' q[root@localhost test3]# diff log2013.log log2014.log -y -W 50) U) U5 g1 ^2 a/ f c
2013-01 2013-01. }2 ~" @( T& z1 O5 N
2013-02 2013-02
) X& N( Y$ ~0 d/ X4 e3 B% Q2013-03 | 2014-03$ S$ `/ k. r6 |+ |* b# }8 V; y5 z* G
2013-04 2013-04
$ I: c0 y2 ^( L2013-05 2013-05
! P- J6 q+ s4 ?0 G5 h6 x3 `2013-06 2013-06
3 a1 j% n6 I/ b6 @: R2013-07 2013-074 |* g( v3 K- j/ m
2013-08 | 2013-07
- l2 s# m" Y/ |6 ^) D2013-09 2013-09
$ E# v; L5 z# m0 X$ a2013-10 2013-10& j0 O; u3 N0 @ N3 c' V
> 2013-11
. w+ K& N: c( {; }4 L > 2013-124 Q% @" F8 G" |+ _: N" I8 o
说明:6 h5 a& D) i$ Q7 N5 w* e8 J# V
$ H) l0 d0 j' `6 M"|"表示前后2个文件内容有不同
/ \% D% G" L4 {"<"表示后面文件比前面文件少了1行内容) _% N/ G8 \; Z, @' K0 h' @2 P
">"表示后面文件比前面文件多了1行内容 |
|