4BSD/usr/man/cat1/diff.1

Compare this file to the similar file:
Show the results in this format:




DIFF(1)             UNIX Programmer's Manual              DIFF(1)



NAME
     diff - differential file and directory comparator

SYNOPSIS
     diff [ -l ] [ -r ] [ -s ] [ -cefh ] [ -b ] dir1 dir2
     diff [ -cefh ] [ -b ] file1 file2
     diff [ -D_s_t_r_i_n_g ] [ -b ] file1 file2

DESCRIPTION
     If both arguments are directories, _d_i_f_f sorts the contents
     of the directories by name, and then runs the regular file
     _d_i_f_f algorithm (described below) on text files which are
     different.  Binary files which differ, common subdirec-
     tories, and files which appear in only one directory are
     listed.  Options when comparing directories are:

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

     -r   causes application of _d_i_f_f recursively to common sub-
          directories encountered.

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

     -Sname
          starts a directory _d_i_f_f in the middle beginning with
          file _n_a_m_e.

     When run on regular files, and when comparing text files
     which differ during directory comparison, _d_i_f_f tells what
     lines must be changed in the files to bring them into agree-
     ment.  Except in rare circumstances, _d_i_f_f finds a smallest
     sufficient set of file differences.  If neither _f_i_l_e_1 nor
     _f_i_l_e_2 is a directory, then either may be given as `-', in
     which case the standard input is used.  If _f_i_l_e_1 is a direc-
     tory, then a file in that directory whose file-name is the
     same as the file-name of _f_i_l_e_2 is used (and vice versa).

     There are several options for output format; the default
     output format contains lines of these forms:

          _n_1 a _n_3,_n_4
          _n_1,_n_2 d _n_3
          _n_1,_n_2 c _n_3,_n_4

     These lines resemble _e_d commands to convert _f_i_l_e_1 into
     _f_i_l_e_2.  The numbers after the letters pertain to _f_i_l_e_2.  In
     fact, by exchanging `a' for `d' and reading backward one may
     ascertain equally how to convert _f_i_l_e_2 into _f_i_l_e_1.  As in



Printed 11/10/80                                                1






DIFF(1)             UNIX Programmer's Manual              DIFF(1)



     _e_d, identical pairs where _n_1 = _n_2 or _n_3 = _n_4 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 second file flagged by `>'.

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

     -e       producing a script of _a, _c and _d commands for the
              editor _e_d, which will recreate _f_i_l_e_2 from _f_i_l_e_1.
              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 _e_d scripts ($2,$3,...) made by
              _d_i_f_f 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 compar-
              ing directories with -e, so that the result is a
              _s_h(1) script for converting text files which are
              common to the two directories from their state in
              _d_i_r_1 to their state in _d_i_r_2.

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

     -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
              _f_i_l_e_1 are marked with `-'; those added to _f_i_l_e_2 are
              marked `+'.  Lines which are changed from one file
              to the other are marked in both files with `!'.

     -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 _d_i_f_f to create a merged version of _f_i_l_e_1 and
              _f_i_l_e_2 on the standard output, with C preprocessor
              controls included so that a compilation of the
              result without defining _s_t_r_i_n_g is equivalent to
              compiling _f_i_l_e_1, while defining _s_t_r_i_n_g will yield
              _f_i_l_e_2.




Printed 11/10/80                                                2






DIFF(1)             UNIX Programmer's Manual              DIFF(1)



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

FILES
     /tmp/d?????
     /usr/lib/diffh for -h
     /usr/bin/pr

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

DIAGNOSTICS
     Exit status is 0 for no differences, 1 for some, 2 for trou-
     ble.

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 option specified,
     _d_i_f_f first compares the files ala _c_m_p, and then decides to
     run the _d_i_f_f algorithm 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 differences are
     insignificant blank string differences.





























Printed 11/10/80                                                3