|
DIFF(1) GNU Tools DIFF(1)
NAME
diff - find differences between two files
SYNOPSIS
diff [options] from-file to-file
DESCRIPTION
In the simplest case, diff compares the contents of the two files from-
file and to-file. A file name of - stands for text read from the stan-
dard input. As a special case, diff - - compares a copy of standard
input to itself.
If from-file is a directory and to-file is not, diff compares the file
in from-file whose file name is that of to-file, and vice versa. The
non-directory file must not be -.
If both from-file and to-file are directories, diff compares corre-
sponding files in both directories, in alphabetical order; this compar-
ison is not recursive unless the -r or --recursive option is given.
diff never compares the actual contents of a directory as if it were a
file. The file that is fully specified may not be standard input,
because standard input is nameless and the notion of ``file with the
same name'' does not apply.
diff options begin with -, so normally from-file and to-file may not
begin with -. However, -- as an argument by itself treats the remain-
ing arguments as file names even if they begin with -.
Options
Below is a summary of all of the options that GNU diff accepts. Most
options have two equivalent names, one of which is a single letter pre-
ceded by -, and the other of which is a long name preceded by --. Mul-
tiple single letter options (unless they take an argument) can be com-
bined into a single command line word: -ac is equivalent to -a -c.
Long named options can be abbreviated to any unique prefix of their
name. Brackets ([ and ]) indicate that an option takes an optional
argument.
-lines Show lines (an integer) lines of context. This option does not
specify an output format by itself; it has no effect unless it
is combined with -c or -u. This option is obsolete. For proper
operation, patch typically needs at least two lines of context.
-a Treat all files as text and compare them line-by-line, even if
they do not seem to be text.
-b Ignore changes in amount of white space.
-B Ignore changes that just insert or delete blank lines.
--brief
Report only whether the files differ, not the details of the
differences.
-c Use the context output format.
-C lines
--context[=lines]
Use the context output format, showing lines (an integer) lines
of context, or three if lines is not given. For proper opera-
tion, patch typically needs at least two lines of context.
--changed-group-format=format
Use format to output a line group containing differing lines
from both files in if-then-else format. For more details on
what can be specified in the format string, consult the info
documentation of diff .
-d Change the algorithm to perhaps find a smaller set of changes.
This makes diff slower (sometimes much slower).
-D name
Make merged if-then-else format output, conditional on the pre-
processor macro name.
-e
--ed Make output that is a valid ed script.
--exclude=pattern
When comparing directories, ignore files and subdirectories
whose basenames match pattern.
--exclude-from=file
When comparing directories, ignore files and subdirectories
whose basenames match any pattern contained in file.
--expand-tabs
Expand tabs to spaces in the output, to preserve the alignment
of tabs in the input files.
-f Make output that looks vaguely like an ed script but has changes
in the order they appear in the file.
-F regexp
In context and unified format, for each hunk of differences,
show some of the last preceding line that matches regexp.
--forward-ed
Make output that looks vaguely like an ed script but has changes
in the order they appear in the file.
-h This option currently has no effect; it is present for Unix com-
patibility.
-H Use heuristics to speed handling of large files that have numer-
ous scattered small changes.
--horizon-lines=lines
Do not discard the last lines lines of the common prefix and the
first lines lines of the common suffix.
-i Ignore changes in case; consider upper- and lower-case letters
equivalent.
-I regexp
Ignore changes that just insert or delete lines that match reg-
exp.
--ifdef=name
Make merged if-then-else format output, conditional on the pre-
processor macro name.
--ignore-all-space
Ignore white space when comparing lines.
--ignore-blank-lines
Ignore changes that just insert or delete blank lines.
--ignore-case
Ignore changes in case; consider upper- and lower-case to be the
same.
--ignore-matching-lines=regexp
Ignore changes that just insert or delete lines that match reg-
exp.
--ignore-space-change
Ignore changes in amount of white space.
--initial-tab
Output a tab rather than a space before the text of a line in
normal or context format. This causes the alignment of tabs in
the line to look normal.
-l Pass the output through pr to paginate it.
-L label
--label=label
Use label instead of the file name in the context format and
unified format headers.
--left-column
Print only the left column of two common lines in side by side
format.
--line-format=format
Use format to output all input lines in in-then-else format.
--minimal
Change the algorithm to perhaps find a smaller set of changes.
This makes diff slower (sometimes much slower).
-n Output RCS-format diffs; like -f except that each command speci-
fies the number of lines affected.
-N
--new-file
In directory comparison, if a file is found in only one direc-
tory, treat it as present but empty in the other directory.
--new-group-format=format
Use format to output a group of lines taken from just the second
file in if-then-else format.
--new-line-format=format
Use format to output a line taken from just the second file in
if-then-else format.
-o Use the old traditional output format.
--old-group-format=format
Use format to output a group of lines taken from just the first
file in if-then-else format.
--old-line-format=format
Use format to output a line taken from just the first file in
if-then-else format.
-p Show which C function each change is in.
-P When comparing directories, if a file appears only in the second
directory of the two, treat it as present but empty in the
other.
--paginate
Pass the output through pr to paginate it.
-q Report only whether the files differ, not the details of the
differences.
--rcs Output RCS-format diffs; like -f except that each command speci-
fies the number of lines affected.
-r
--recursive
When comparing directories, recursively compare any subdirecto-
ries found.
-s
--report-identical-files
Report when two files are the same.
-S file
When comparing directories, start with the file file. This is
used for resuming an aborted comparison.
--sdiff-merge-assist
Print extra information to help sdiff. sdiff uses this option
when it runs diff. This option is not intended for users to use
directly.
--show-c-function
Show which C function each change is in.
--show-function-line=regexp
In context and unified format, for each hunk of differences,
show some of the last preceding line that matches regexp.
--side-by-side
Use the side by side output format.
--speed-large-files
Use heuristics to speed handling of large files that have numer-
ous scattered small changes.
--starting-file=file
When comparing directories, start with the file file. This is
used for resuming an aborted comparison.
--suppress-common-lines
Do not print common lines in side by side format.
-t Expand tabs to spaces in the output, to preserve the alignment
of tabs in the input files.
-T Output a tab rather than a space before the text of a line in
normal or context format. This causes the alignment of tabs in
the line to look normal.
--text Treat all files as text and compare them line-by-line, even if
they do not appear to be text.
-u Use the unified output format.
--unchanged-group-format=format
Use format to output a group of common lines taken from both
files in if-then-else format.
--unchanged-line-format=format
Use format to output a line common to both files in if-then-else
format.
--unidirectional-new-file
When comparing directories, if a file appears only in the second
directory of the two, treat it as present but empty in the
other.
-U lines
--unified[=lines]
Use the unified output format, showing lines (an integer) lines
of context, or three if lines is not given. For proper opera-
tion, patch typically needs at least two lines of context.
-v
--version
Output the version number of diff.
-w Ignore horizontal white space when comparing lines.
-W columns
--width=columns
Use an output width of columns in side by side format.
-x pattern
When comparing directories, ignore files and subdirectories
whose basenames match pattern.
-X file
When comparing directories, ignore files and subdirectories
whose basenames match any pattern contained in file.
-y Use the side by side output format.
RETURN VALUE
diff returns 0 if the files are identical or 1 if the files differ. If
one or both of the files cannot be opened, then the return value is set
to 2.
ENVIRONMENT
The environment variable DIFF_OPTIONS can hold a set of default options
for diff. These options are interpreted first and can be overwritten
by explicit command line parameters.
EXAMPLES
To save to a file some changes that you have made to your local source
tree (possibly including new files), which you would like to show to
others (perhaps using the send-pr(1) program), you could type
diff -urN foo.orig foo >foo.diff
where foo.orig and foo might be directory hierarchies or single files.
SEE ALSO
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).
DIAGNOSTICS
An exit status of 0 means no differences were found, 1 means some dif-
ferences were found, and 2 means trouble.
GNU Tools 22sep1993 DIFF(1)
|