diff(1)diff(1)NAMEdiff - Compares text files
SYNOPSISdiff [-c | -C number | -e | -f | -h | -n] [-bilrstw] [-Sfile]
directory1 directory2
diff [-c | -C number | -e | -f | -h | -n] [-bitw] file1 file2
diff [-Dstring] [-bitw] file1 file2
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
diff: XCU5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
OPTIONS
The -c, -C, -e, -f, -h, and -n options are mutually exclusive.
The -r, -s, and -S options can be specified with directory comparisons
only.
The -b, -i, -l, -t, and -w options can be used in combination with any
others and in both file and directory comparisons. Causes trailing
white space at the end of a line to be treated as a single newline
character. Produces a listing with the default number of lines of con‐
text (3 lines). The output lists the files being compared and their
last modification dates, then lists the differing lines. Lines that
are changed from one file to the other are marked in both files with an
! (exclamation point). Changes that lie within the specified number
of lines of each other are grouped together on output. Produces output
that provides number lines of context (where number is a positive deci‐
mal integer). [Tru64 UNIX] Causes diff to create a merged version of
file1 and file2 on the standard output, with C preprocessor controls
included. Thus, a compilation of the result without defining string is
equivalent to compiling file1, while defining string yields file2.
Produces a script of a, c, d, and s commands for the editor ed, which
can recreate file2 from file1. In connection with -e, the following
shell program can help maintain multiple versions of a file. Only an
ancestral 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
[Tru64 UNIX] Extra commands are added to the output when com‐
paring directories with -e; the result is a sh script for con‐
verting text files common to the directories from their state in
directory1 to their state in directory2. Produces a script sim‐
ilar to that of -e, not useful with ed, and in the opposite
order. [Tru64 UNIX] Performs a faster comparison. This option
only works when the changed sections are short and well sepa‐
rated, but it does work on files of any length. The -e and -f
options are not available when you use the -h option. [Tru64
UNIX] Ignores the case of letters. For example, A is consid‐
ered identical to a. [Tru64 UNIX] Specifies long output for‐
mat; each text file diff listing is piped through pr to paginate
it, other differences are remembered and summarized after all
text file differences are reported. (Directory comparisons
only.) [Tru64 UNIX] Produces a script similar to that of -e,
but in the opposite order and with a count of changed lines on
each insert or delete command. This is the form used by the
revision control system (RCS). Checks files in common subdirec‐
tories recursively. [Tru64 UNIX] Reports identical files,
which are otherwise not mentioned. [Tru64 UNIX] Starts a
directory diff in the middle, beginning with file. (Directory
comparisons only.) [Tru64 UNIX] Expands tabs in output lines.
Normal or -c output adds characters to the front of each line
that can affect the indentation of the original source lines and
make the output listing difficult to interpret. This option
preserves the original source's indentation. [Tru64 UNIX] Is
similar to -b, but causes whitespace (spaces and tabs) to be
ignored. For example, if ( a == b ) is considered identical to
if(a==b).
OPERANDS
The path names of files or directories to be compared. See the DESCRIP‐
TION section for the permissible combinations. If any operand is spec‐
ified as - (hyphen), standard input is read at that point.
DESCRIPTION
Input Options
If neither file1 nor file2 is a directory, then either can be given as
- (dash), in which case the standard input is used. If file1 is a
directory and file2 is a file, or vice versa, a file in the specified
directory with the same name as the specified file is used.
If both arguments are directories, diff sorts the contents of the
directories by name, and then runs the regular diff file algorithm on
text files that are different. Binary files that differ, common subdi‐
rectories, and files that appear in only one directory are also listed.
Output Options
There are several choices for output format. The default output format
contains lines of these forms: number1 a number2,number3 number1,num‐
ber2 d number3 number1,number2 c number3,number4
These lines resemble ed commands to convert file1 into file2. In these
lines, the command a indicates that a line or lines were added to one
of the files; d indicates that a line or lines were deleted; and c
indicates that a line or lines were changed. The numbers after the
letters pertain to file2. In fact, by exchanging a for d and reading
backward one can ascertain equally how to convert file2 into file1. As
in ed, identical pairs where number1 = number2 or number3 = number4 are
abbreviated as a single number.
Following each of these lines come all the lines that are affected in
the first file, flagged by < (left angle bracket), then all the lines
that are affected in the second file, flagged by > (right angle
bracket).
Except in rare circumstances, diff finds the smallest sufficient set of
file differences.
NOTES
[Tru64 UNIX] Editing scripts produced by the -e or -f options cannot
create lines consisting of a single . (dot) character. [Tru64
UNIX] Block, character, or FIFO special files cannot be used with diff
because they cause the command to exit. [Tru64 UNIX] If lines at the
end of a file are changed and other lines added, diff output may show
this as a delete and add, as a change, or as a change and add. That is,
diff is not expected to know what happened.
EXIT STATUS
The following exit values are returned: No differences. Differences
found. An error occurred.
EXAMPLES
To compare two files, enter: diff chap1.bak chap1
This displays the differences between the files chap1.bak and
chap1. To compare two files, ignoring differences in the amount
of white space, enter: diff-b prog.c.bak prog.c
If two lines differ only in the number of spaces and tabs
between words, then the diff command considers them to be the
same. To create a file containing commands that the ed command
can use to reconstruct one file from another, enter: diff-e ch2
ch2.old > new.old.ed
This creates a file named new.to.old.ed that contains the ed
subcommands to change chap2 back into the version of the text
found in chap2.old. In most cases, new.to.old.ed is a much
smaller file than chap2.old. You can save disk space by delet‐
ing chap2.old, and you can reconstruct it at any time by enter‐
ing: (cat new.old.ed ; echo '1,$p') | ed - ch2 > ch2.old
The commands in parentheses add 1,$p to the end of the editing
commands sent to the ed editor. The 1,$p causes the ed command
to write the file to standard output after editing it. This
modified command sequence is then piped to the ed command ( | ed
), and the editor reads it as standard input. The - option
causes the ed command not to display the file size and other
extra information, since it would be mixed with the text of
chap2.old.
ENVIRONMENT VARIABLES
The following environment variables affect the execution of diff: Pro‐
vides a default value for the internationalization variables that are
unset or null. If LANG is unset or null, the corresponding value from
the default locale is used. If any of the internationalization vari‐
ables contain an invalid setting, the utility behaves as if none of the
variables had been defined. If set to a non-empty string value, over‐
rides the values of all the other internationalization variables.
Determines the locale for the interpretation of sequences of bytes of
text data as characters (for example, single-byte as opposed to multi‐
byte characters in arguments). Determines the locale for the format
and contents of diagnostic messages written to standard error. Deter‐
mines the location of message catalogues for the processing of LC_MES‐
SAGES. Determines the locale for affecting the time zone used for cal‐
culating the timestamps written with the -c and -C options.
FILES
For the -h option. For the -l option.
SEE ALSO
Commands: bdiff(1), cmp(1), comm(1), diff3(1), ed(1), pr(1)
Standards: standards(5)diff(1)