diff

Command: man perldoc info search(apropos)  


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)

Copyright ©2006 TheBestISP.com