123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- .TH DIFF 1
- .SH NAME
- diff \- differential file comparator
- .SH SYNOPSIS
- .B diff
- [
- .B -abcefmnrw
- ] 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)
- .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.
|