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