177 lines
3.0 KiB
Plaintext
177 lines
3.0 KiB
Plaintext
|
.TH DIFF 1
|
||
|
.SH NAME
|
||
|
diff \- differential file comparator
|
||
|
.SH SYNOPSIS
|
||
|
.B diff
|
||
|
[
|
||
|
.B -abcefmnrw
|
||
|
]
|
||
|
.I 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
|
||
|
.IR 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.
|
||
|
In this mode,
|
||
|
.I diff
|
||
|
prints
|
||
|
.L -
|
||
|
and
|
||
|
.L +
|
||
|
instead of
|
||
|
.L <
|
||
|
and
|
||
|
.L >
|
||
|
because the former are easier to distinguish when mixed.
|
||
|
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 /sys/src/cmd/diff
|
||
|
.SH "SEE ALSO"
|
||
|
.IR cmp (1),
|
||
|
.IR comm (1),
|
||
|
.IR ed (1),
|
||
|
.IR idiff (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.
|