Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
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)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ENVIRONMENT | EXAMPLES | SEE ALSO | DIAGNOSTICS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=diff&sektion=1&manpath=FreeBSD+5.5-RELEASE>

home | help