Blob


1 .TH DIFF 1
2 .SH NAME
3 diff \- differential file comparator
4 .SH SYNOPSIS
5 .B diff
6 [
7 .B -acefmnbwr
8 ] file1 ... file2
9 .SH DESCRIPTION
10 .I Diff
11 tells what lines must be changed in two files to bring them
12 into agreement.
13 If one file
14 is a directory,
15 then a file in that directory with basename the same as that of
16 the other file is used.
17 If both files are directories, similarly named files in the
18 two directories are compared by the method of
19 .I diff
20 for text
21 files and
22 .MR cmp (1)
23 otherwise.
24 If more than two file names are given, then each argument is compared
25 to the last argument as above.
26 The
27 .B -r
28 option causes
29 .I diff
30 to process similarly named subdirectories recursively.
31 When processing more than one file,
32 .I diff
33 prefixes file differences with a single line
34 listing the two differing files, in the form of
35 a
36 .I diff
37 command line.
38 The
39 .B -m
40 flag causes this behavior even when processing single files.
41 .PP
42 The normal output contains lines of these forms:
43 .IP "" 5
44 .I n1
45 .B a
46 .I n3,n4
47 .br
48 .I n1,n2
49 .B d
50 .I n3
51 .br
52 .I n1,n2
53 .B c
54 .I n3,n4
55 .PP
56 These lines resemble
57 .I ed
58 commands to convert
59 .I file1
60 into
61 .IR file2 .
62 The numbers after the letters pertain to
63 .IR file2 .
64 In fact, by exchanging `a' for `d' and reading backward
65 one may ascertain equally how to convert
66 .I file2
67 into
68 .IR file1 .
69 As in
70 .IR ed ,
71 identical pairs where
72 .I n1
73 =
74 .I n2
75 or
76 .I n3
77 =
78 .I n4
79 are abbreviated as a single number.
80 .PP
81 Following each of these lines come all the lines that are
82 affected in the first file flagged by `<',
83 then all the lines that are affected in the second file
84 flagged by `>'.
85 .PP
86 The
87 .B -b
88 option causes
89 trailing blanks (spaces and tabs) to be ignored
90 and other strings of blanks to compare equal.
91 The
92 .B -w
93 option causes all white-space to be removed from input lines
94 before applying the difference algorithm.
95 .PP
96 The
97 .B -n
98 option prefixes each range with
99 .IB file : \fR
100 and inserts a space around the
101 .BR a ,
102 .BR c ,
103 and
104 .B d
105 verbs.
106 The
107 .B -e
108 option produces a script of
109 .I "a, c"
110 and
111 .I d
112 commands for the editor
113 .IR ed ,
114 which will recreate
115 .I file2
116 from
117 .IR file1 .
118 The
119 .B -f
120 option produces a similar script,
121 not useful with
122 .IR ed ,
123 in the opposite order. It may, however, be
124 useful as input to a stream-oriented post-processor.
125 .PP
126 The
127 .B -c
128 option includes three lines of context around each
129 change, merging changes whose contexts overlap.
130 The
131 .B -a
132 flag displays the entire file as context.
133 .PP
134 Except in rare circumstances,
135 .I diff
136 finds a smallest sufficient set of file
137 differences.
138 .SH FILES
139 .B /tmp/diff[12]
140 .SH SOURCE
141 .B \*9/src/cmd/diff
142 .SH "SEE ALSO"
143 .MR cmp (1) ,
144 .MR comm (1) ,
145 .MR ed (1)
146 .SH DIAGNOSTICS
147 Exit status is the empty string
148 for no differences,
149 .L some
150 for some,
151 and
152 .L error
153 for trouble.
154 .SH BUGS
155 Editing scripts produced under the
156 .BR -e " or"
157 .BR -f " option are naive about"
158 creating lines consisting of a single `\fB.\fR'.
159 .PP
160 When running
161 .I diff
162 on directories, the notion of what is a text
163 file is open to debate.