* Note : consider using sdiff instead *
User Commands diff(1)
diff - display line-by-line differences between pairs of
diff [ -bitw ] [ -c | -e | -f | -h | -n ] file1 file2
diff [ -bitw ] [ -C number ] file1 file2
diff [ -bitw ] [ -D string ] file1 file2
diff [ -bitw ] [ -c | -e | -f | -h | -n ] [ -l ] [ -r ]
[ -s ] [ -S name ] directory1 directory2
The diff utility will compare the contents of file1 and
file2 and write to standard output a list of changes neces-
sary to convert file1 into file2. This list should be
minimal. No output will be produced if the files are ident-
The normal output contains lines of these forms:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
where n1 and n2 represent lines file1 and n3 and n4
represent lines in file2 These lines resemble ed(1) commands
to convert file1 to file2. By exchanging a for d and read-
ing backward, file2 can be converted to file1. As in ed,
identical pairs, where n1=n2 or n3=n4, are abbreviated as a
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 `>'.
-b Ignores trailing blanks (spaces and tabs) and
treats other strings of blanks as equivalent.
-i Ignores the case of letters; for example, `A'
will compare equal to `a'.
-t Expands TAB characters in output lines. Nor-
mal or -c output adds character(s) to the
front of each line that may adversely affect
the indentation of the original source lines
and make the output lines difficult to inter-
pret. This option will preserve the original
-w Ignores all blanks (SPACE and TAB characters)
and treats all other strings of blanks as
equivalent; for example, `if ( a == b )' will
compare equal to `if(a==b)'.
The following options are mutually exclusive:
-c Produces a listing of differences with three
lines of context. With this option output
format is modified slightly: output begins
with identification of the files involved and
their creation dates, then each change is
separated by a line with a dozen *'s. The
lines removed from file1 are marked with '-';
those added to file2 are marked '+'. Lines
that are changed from one file to the other
are marked in both files with '!'.
-C number Produces a listing of differences identical
to that produced by -c with number lines of
-e Produces a script of only a, c, and d com-
mands for the editor ed, which will recreate
file2 from file1. In connection with -e, the
following shell program may help maintain
multiple versions of a file. Only an ances-
tral file ($1) and a chain of version-to-
version ed scripts ($2,$3,...) made by diff
need be on hand. A ``latest version''
appears on the standard output.
(shift; cat $*; echo '1,$p') | ed - $1
Except in rare circumstances, diff finds a smallest suffi-
cient set of file differences.
-f Produces a similar script, not useful with
ed, in the opposite order.
-h Does a fast, half-hearted job. It works only
when changed stretches are short and well
separated, but does work on files of unlim-
ited length. Options -c, -e, -f, and -n are
unavailable with -h. diff does not descend
into directories with this option.
-n Produces a script similar to -e, but in the
opposite order and with a count of changed
lines on each insert or delete command.
-D string Creates a merged version of file1 and file2
with C preprocessor controls included so that
a compilation of the result without defining
string is equivalent to compiling file1,
while defining string will yield file2.
The following options are used for comparing directories:
-l Produce output in long format. Before the
diff, each text file is piped through pr(1)
to paginate it. Other differences are remem-
bered and summarized after all text file
differences are reported.
-r Applies diff recursively to common subdirec-
-s Reports files that are the identical; these
would not otherwise be mentioned.
-S name Starts a directory diff in the middle, begin-
ning with the file name.
The following operands are supported:
file2 A path name of a file or directory to be com-
pared. If either file1 or file2 is -, the stan-
dard input will be used in its place.
directory2 A path name of a directory to be compared.
If only one of file1 and file2 is a directory, diff will be
applied to the non-directory file and the file contained in
the directory file with a filename that is the same as the
last component of the non-directory file.
See largefile(5) for the description of the behavior of diff
when encountering files greater than or equal to 2 Gbyte
If dir1 is a directory containing a directory named x, dir2
is a directory containing a directory named x, dir1/x and
dir2/x both contain files named date.out, and dir2/x con-
tains a file named y, the command:
example% diff -r dir1 dir2
could produce output similar to:
Common subdirectories: dir1/x and dir2/x
Only in dir2/x: y
diff -r dir1/x/date.out dir2/x/date.out
< Mon Jul 2 13:12:16 PDT 1990
> Tue Jun 19 21:41:39 PDT 1990
See environ(5) for descriptions of the following environment
variables that affect the execution of diff: LC_CTYPE,
LC_MESSAGES, LC_TIME, and NLSPATH.
TZ Determine the locale for affecting the timezone
used for calculating file timestamps written with
the -C and -c options.
The following exit values are returned:
0 No differences were found.
1 Differences were found.
>1 An error occurred.
/tmp/d????? temporary file used for comparison
/usr/lib/diffh executable file for -h option
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE| ATTRIBUTE VALUE|
| Availability | SUNWesu |
| CSI | Enabled |
bdiff(1), cmp(1), comm(1), dircmp(1), ed(1), pr(1),
sdiff(1), attributes(5), environ(5), largefile(5)
Editing scripts produced under the -e or -f options are
naive about creating lines consisting of a single period
Missing NEWLINE at end of file indicates that the last line
of the file in question did not have a NEWLINE. If the lines
are different, they will be flagged and output; although the
output will seem to indicate they are the same.
SunOS 5.6 Last change: 20 Dec 1996 4