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

  
 
  

home | help
2DIFF(1)		     General Commands Manual			2DIFF(1)

NAME
     2diff - 2.11BSD differential file and directory comparator

SYNOPSIS
     2diff [ -l ] [ -r ] [ -s ] [ -cefhn ] [ -biwt ] dir1 dir2
     2diff [ -cefhn ] [ -biwt ] file1 file2
     2diff [ -Dstring ] [ -biw ] file1 file2

DESCRIPTION
     If both arguments are directories, 2diff sorts the contents of the directo-
     ries by name, and then runs the regular file 2diff algorithm (described be-
     low)  on text files which are different.  Binary files which differ, common
     subdirectories, and files which appear in only one  directory  are  listed.
     Options when comparing directories are:

     -l     long  output  format; each text file 2diff is piped through pr(1) to
	    paginate it, other differences are remembered and  summarized  after
	    all text file differences are reported.

     -r     causes application of 2diff recursively to common subdirectories en-
	    countered.

     -s     causes 2diff to report files which are the same, which are otherwise
	    not mentioned.

     -Sname
	    starts a directory 2diff in the middle beginning with file name.

     When  run on regular files, and when comparing text files which differ dur-
     ing directory comparison, 2diff tells what lines must  be	changed  in  the
     files  to	bring  them into agreement.  Except in rare circumstances, 2diff
     finds a smallest sufficient set of file differences.  If neither file1  nor
     file2  is	a  directory, then either may be given as `-', in which case the
     standard input is used.  If file1 is a directory, then a file in  that  di-
     rectory  whose file-name is the same as the file-name of file2 is used (and
     vice versa).

     There are several options for output format; the default output format con-
     tains lines of these forms:

	  n1 a n3,n4
	  n1,n2 d n3
	  n1,n2 c n3,n4

     These lines resemble ed commands to convert file1 into file2.  The  numbers
     after the letters pertain to file2.  In fact, by exchanging `a' for `d' and
     reading backward one may ascertain equally how to convert file2 into file1.
     As  in  ed,  identical  pairs where n1 = n2 or n3 = n4 are abbreviated 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 sec-
     ond file flagged by `>'.

     Except  for -b, -w, -i or -t which may be given with any of the others, the
     following options are mutually exclusive:

     -e       produces a script of a, c and d commands for the editor ed,  which
	      will  recreate  file2 from file1.  In connection with -e, the fol-
	      lowing shell program may help  maintain  multiple  versions  of  a
	      file.   Only an ancestral file ($1) and a chain of version-to-ver-
	      sion ed scripts ($2,$3,...) made by 2diff  need  be  on  hand.   A
	      `latest version' appears on the standard output.

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

	      Extra  commands are added to the output when comparing directories
	      with -e, so that the result is a sh(1) script for converting  text
	      files  which are common to the two directories from their state in
	      dir1 to their state in dir2.

     -f       produces a script similar to that of -e, not useful with	ed,  and
	      in the opposite order.

     -n       produces a script similar to that of -e, but in the opposite order
	      and  with  a  count of changed lines on each insert or delete com-
	      mand.  This is the form used by rcsdiff(1).

     -c       produces a diff with lines of context.  The default is to  present
	      3  lines	of context and may be changed, e.g to 10, by -c10.  With
	      -c the output format is modified slightly:  the  output  beginning
	      with identification of the files involved and their creation dates
	      and 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 which are changed from one	file  to
	      the other are marked in both files with with `! '.

	      Changes which lie within <context> lines of each other are grouped
	      together	on  output.  (This is a change from the previous ``2diff
	      -c'' but the resulting output is usually	much  easier  to  inter-
	      pret.)

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

     -Dstring
	      causes  2diff to create a merged version of file1 and file2 on the
	      standard output, with C preprocessor controls included so  that  a
	      compilation of the result without defining string is equivalent to
	      compiling file1, while defining string will yield file2.

     -b       causes  trailing blanks (spaces and tabs) to be ignored, and other
	      strings of blanks to compare equal.

     -w       is similar to -b but causes whitespace (blanks and tabs) to be to-
	      tally ignored.  E.g.,  ``if ( a == b )''	will  compare  equal  to
	      ``if(a==b)''.

     -i       ignores  the  case  of letters.  E.g., ``A'' will compare equal to
	      ``a''.

     -t       will expand tabs in output lines.  Normal or -c output adds  char-
	      acter(s) to the front of each line which may screw up the indenta-
	      tion of the original source lines and make the output listing dif-
	      ficult  to  interpret.   This  option  will  preserve the original
	      source's indentation.

FILES
     /tmp/d?????
     /usr/local/libexec/2diffh for -h
     /usr/local/bin/2diff for directory diffs
     /usr/bin/pr

SEE ALSO
     cmp(1), cc(1), comm(1), ed(1), diff3(1)

DIAGNOSTICS
     Exit status is 0 for no differences, 1 for some, 2 for trouble.

BUGS
     Editing scripts produced under the -e or -f option are naive about creating
     lines consisting of a single `.'.

     When comparing directories with the -b, -w or -i options  specified,  2diff
     first  compares  the files ala cmp, and then decides to run the 2diff algo-
     rithm if they are not equal.  This may cause a  small  amount  of	spurious
     output  if the files then turn out to be identical because the only differ-
     ences are insignificant blank string or case differences.

4th Berkeley Distribution	October 21, 1996			2DIFF(1)

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

home | help