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

FreeBSD Manual Pages

  
 
  

home | help
diff(1)				 User Commands			       diff(1)

NAME
       diff - compare two files

SYNOPSIS
       diff [-abBiNptw]	[-c | -e | -f |	-h | -n	| -q | -u] file1 file2

       diff [-abBiNptw]	[-C number | -U	number]	file1 file2

       diff [-abBiNptw]	[-D string] file1 file2

       diff [-abBiNptw]	[-c | -e | -f |	-h | -n	| -q | -u] [-l]	[-r] [-s]
	    [-S	name] directory1 directory2

DESCRIPTION
       The diff	utility	will compare the contents of file1 and file2 and write
       to  standard  output  a list of changes necessary to convert file1 into
       file2.  This list should	be minimal. Except in rare circumstances, diff
       finds a smallest	sufficient set of file differences. No output will  be
       produced	if the files are identical.

       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 reading backward, file2 can be converted to
       file1.  As in ed, identical pairs, where	n1=n2 or n3=n4,	 are  abbrevi-
       ated as a single	number.

       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 `>'.

OPTIONS
       The following options are supported:

       -a     Treat  all files as ASCII	text.  Normally	diff will simply print
	      `Binary files ...	and ...	differ'	if files contain binary	 char-
	      acters.  Use of this option forces diff to produce a diff.

       -b     Ignores  trailing	 blanks	 (spaces  and  tabs)  and treats other
	      strings of blanks	as equivalent.

       -B     Ignores changes that just	 inserted  or  deleted	blank  (empty)
	      lines.

       -i     Ignores the case of letters. For example,	`A' will compare equal
	      to `a'.

       -N     New  file	 mode, treat absent files as empty.  If	diff(1)	prints
	      time stamps for files, the time stamp for	missing	files will re-
	      fer to January 1 1970 00:00:00 GMT.

       -p     With unified and context diffs, show with	each change the	 first
	      40 characters of the last	line before the	context	beginning with
	      a	 letter,  an  underscore  or a dollar sign.  For C source code
	      following	standard layout	conventions, this will show the	proto-
	      type of the function the change applies to.

       -t     Expands TAB characters in	output lines. Normal 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 interpret.  This  option  will	 preserve  the
	      original source's	indentation.

       -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  con-
		   text. With this option, output format is modified slightly.
		   That	is, output begins with identification of the files in-
		   volved  and their creation dates, then each change is sepa-
		   rated by a line with	a dozen	*'s.  The lines	 removed  from
		   file1  are  marked  with '--'. The lines 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 pro-
		   duced by -c with number lines of context.

       -D string   Creates a merged version of file1 and  file2	 with  C  pre-
		   processor  controls	included  so that a compilation	of the
		   result without defining string is equivalent	 to  compiling
		   file1, while	defining string	will yield file2.

       -e	   Produces a script of	only a,	c, and d commands for the edi-
		   tor	ed,  which will	recreate file2 from file1.  In connec-
		   tion	with the -e option, 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  ver-
		   sion'' appears on the standard output.

		     (shift; cat $*; echo '1,$p') | ed - $1

       -f	   Produces a similar script, not useful with ed, in the oppo-
		   site	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 unlimited length. Options -c, -C, -D, -e, -f, -q,
		   -u, 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.

       -q	   Just	 print	a  single  line	message	when the files differ.
		   Does	not output a list of changes.

       -u	   Produces a listing of differences with three	lines of  con-
		   text.  The  output is similar to that of the	-c option, ex-
		   cept	that the context is "unified".	 Removed  and  changed
		   lines  in  file1  are  marked by a '-' while	lines added or
		   changed in file2 are	marked by a  '+'.   Both  versions  of
		   changed  lines  appear in the output, while added, removed,
		   and context lines appear only once. The  identification  of
		   file1  and  file2  is different, with "---" and "+++" being
		   printed where "***" and "---" would appear with the -c  op-
		   tion. Each change is	separated by a line of the form

		     @@	-n1,n2 +n3,n4 @@

       -U number   Produces  a	listing	 of differences	identical to that pro-
		   duced by -u with number lines of context.

       The following options are used for comparing directories:

       -l	   Produces output in long format. Before the diff, each  text
		   file	 is  piped through pr(1) to paginate it. Other differ-
		   ences are remembered	and summarized	after  all  text  file
		   differences are reported.

       -r	   Applies  diff  recursively to common	subdirectories encoun-
		   tered.

       -s	   Reports files that are  identical.  These  identical	 files
		   would not otherwise be mentioned.

       -S name	   Starts  a  directory	diff in	the middle, beginning with the
		   file	name.

OPERANDS
       The following operands are supported:
       file1
       file2	   A path name of a file or directory to be compared.  If  ei-
		   ther	 file1	or file2 is -, the standard input will be used
		   in its place.

       directory1
       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-di-
       rectory file.

USAGE
       See  largefile(7)  for the description of the behavior of diff when en-
       countering files	greater	than or	equal to 2 Gbyte ( 2^31	bytes).

EXAMPLES
       Example 1 Typical output	of the diff command

       In the following	command, 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 contains	a file
       named y:

	 example% diff -r dir1 dir2
	 Common	subdirectories:	dir1/x and dir2/x

	 Only in dir2/x: y

	 diff -r dir1/x/date.out dir2/x/date.out

	 1c1

	 < Mon Jul  2 13:12:16 PDT 1990

	 ---

	 > Tue Jun 19 21:41:39 PDT 1990

ENVIRONMENT VARIABLES
       See environ(7) for descriptions of the following	environment  variables
       that affect the execution of diff: LANG,	LC_ALL,	LC_CTYPE, LC_MESSAGES,
       LC_TIME,	and NLSPATH.

       TZ     Determines the locale for	affecting the timezone used for	calcu-
	      lating file timestamps written with the -C and -c	options.

EXIT STATUS
       The following exit values are returned:

       0      No differences were found.

       1      Differences were found.

       >1     An error occurred.

FILES
       /tmp/d?????	temporary file used for	comparison

       /usr/lib/diffh	executable file	for -h option

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       +------------------------------+-----------------------------+
       |       ATTRIBUTE TYPE	      |	     ATTRIBUTE VALUE	    |
       +------------------------------+-----------------------------+
       | Availability		      |SUNWesu			    |
       +------------------------------+-----------------------------+
       | CSI			      |Enabled			    |
       +------------------------------+-----------------------------+
       | Interface Stability	      |Standard			    |
       +------------------------------+-----------------------------+

SEE ALSO
       bdiff(1), cmp(1), comm(1), dircmp(1), ed(1), patch(1), pr(1), sdiff(1),
       attributes(7), environ(7), largefile(7),	standards(7)

       James  W.  Hunt	and M. Douglas McIlroy,	"An Algorithm for Differential
       File Comparison", Computing Science Technical Report, Bell Laboratories
       41, June	1976

NOTES
       Editing scripts produced	under the -f option are	naive  about  creating
       lines  consisting  of  a	 single	 period	(.).  Editing scripts produced
       under the -e option contain a workaround	for the	problem	that is	under-
       stood by	patch(1).

       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.

BUGS
       None currently known.

       Mail bugs and suggestions to schilytools@mlists.in-berlin.de or open  a
       ticket at https://codeberg.org/schilytools/schilytools/issues.

       The mailing list	archive	may be found at:

       https://mlists.in-berlin.de/mailman/listinfo/schilytools-mlists.in-berlin.de.

AUTHORS
       The  diff(1)  program  was initially written by Douglas McIlroy at Bell
       Labs in 1974.  The SVr4 release was written by various authors at  AT&T
       in 1989.	 The diff(1) program was later maintained by various people at
       AT&T  and Sun Microsystems. Since 2006, it has been maintained by Joerg
       Schilling and the schilytools project authors.

SunOS 5.11			  2022/10/06			       diff(1)

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

home | help