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

FreeBSD Manual Pages


home | help
diff(1)			    General Commands Manual		       diff(1)

       diff - display line-by-line differences between pairs of	text files

       diff [ -bitw ] [	-c | -e	| -f | -h | -n ] file1 file2
       diff [ -bitw ] [	-C number ] file1 file2
       diff [ -bitw ] [	-D string ] file1 file2
       diff [ -bitw ] [	-c | -e	| -f | -h | -n ] [ -l ]	[ -r ]
	    [ -s ] [ -S	name ] directory1 directory2


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

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

       -i	      Ignores  the case	of letters; for	example, `A' will com-
		      pare equal to `a'.

       -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 in-
		      terpret.	 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
		      context.	With this option  output  format  is  modified
		      slightly:	output begins with identification of the files
		      involved and their creation dates, then each  change  is
		      separated	by a line with a dozen *'s.  The lines removed
		      from file1 are marked with '--'; those  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.

       -e	      Produces	a  script of only a, c,	and d commands for the
		      editor ed, which will recreate  file2  from  file1.   In
		      connection with -e, the following	shell program may 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

       Except  in  rare	circumstances, diff finds a smallest sufficient	set of
       file differences.

       -f	      Produces a similar script, not useful with  ed,  in  the
		      opposite 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, -e, -f,
		      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 or-
		      der and with a count of changed lines on each insert  or
		      delete command.

       -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 compil-
		      ing file1, while defining	string will yield file2.

       The following options are used for comparing directories:

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

       -r	      Applies  diff  recursively  to common subdirectories en-

       -s	      Reports files that are the identical;  these  would  not
		      otherwise	be mentioned.

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

       The following operands are supported:

       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.

       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.

       If dir1 is a directory containing a directory named x, dir2 is a	direc-
       tory containing a directory named x, dir1/x  and	 dir2/x	 both  contain
       files named date.out, and dir2/x	contains a file	named y, the command:
	      example% diff -r dir1 dir2
       could produce output similar to:
	      Common subdirectories: dir1/x and	dir2/x
	      Only in dir2/x: y
	      diff -r dir1/x/date.out dir2/x/date.out
	      <	Mon Jul	 2 13:12:16 PDT	1990
	      >	Tue Jun	19 21:41:39 PDT	1990

       See  environ(5) for descriptions	of the following environment variables
       that affect the execution of diff: LC_CTYPE, LC_MESSAGES, and NLSPATH.

       LC_TIME	 Determine the locale for affecting the	format of  file	 time-
		 stamps	written	with the -C and	-c options.

       TZ	 Determine the locale for affecting the	timezone used for cal-
		 culating file timestamps written with the -C and -c options.

       The following exit values are returned:

       0   No differences were found.

       1   Differences were found.

       >1  An error occurred.

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

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

       bdiff(1), cmp(1), comm(1), dircmp(1),  ed(1),  pr(1),  sdiff(1),	 envi-

       Editing	scripts	 produced  under  the -e or -f options are naive about
       creating	lines consisting of a single period (.).

       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.

				  15 Feb 1996			       diff(1)


Want to link to this manual page? Use this URL:

home | help