4.4BSD/usr/share/man/cat1/diff.0

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

DIFF(1)                      BSD Reference Manual                      DIFF(1)

NNAAMMEE
     ddiiffff - differential file and directory comparator

SSYYNNOOPPSSIISS
     ddiiffff [--cceeffhhnn] [--bbiiwwtt] _f_i_l_e_1 _f_i_l_e_2
     ddiiffff [--DD_s_t_r_i_n_g] [--bbiiww] _f_i_l_e_1 _f_i_l_e_2
     ddiiffff [--ll] [--rr] [--ss] [--cceeffhhnn] [--bbiiwwtt] [--SS_n_a_m_e] _d_i_r_1 _d_i_r_2

DDEESSCCRRIIPPTTIIOONN
     The ddiiffff utility compares the contents of _f_i_l_e_1 and _f_i_l_e_2 and writes to
     the standard output the list of changes necessary to convert one file in-
     to the other.  No output is produced if the files are identical.

     Output options (mutually exclusive):

     --cc      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 --cc1100. With
             --cc 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 `! '.  Changes
             which lie within <context> lines of each other are grouped to-
             gether on output.  (This is a change from the previous ``diff
             -c'' but the resulting output is usually much easier to inter-
             pret.)

     --ee      produces output in a form suitable as input for the editor utili-
             ty, ed(1),  which can then be used to convert file1 into file2.

             Extra commands are added to the output when comparing directories
             with --ee, so that the result is a sh(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.

     --ff      identical output to that of the --ee flag, but in reverse order.
             It cannot be digested by ed(1).

     --hh      Invokes an alternate algorithm which can handle files of very
             long lengths.  There is a trade off. The algorithm can only deal
             with changes which are clearly delimited and brief. Long sections
             of changes and overlaps will confuse it.

     --nn      produces a script similar to that of --ee, but in the opposite or-
             der and with a count of changed lines on each insert or delete
             command.  This is the form used by rcsdiff(1).

     --DD_s_t_r_i_n_g
             creates a merged version of _f_i_l_e_1 and _f_i_l_e_2 on the standard out-
             put, 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.

     Comparison options:

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

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

     --tt      will expand tabs in output lines.  Normal or --cc output adds char-
             acter(s) to the front of each line which may screw up the inden-
             tation of the original source lines and make the output listing
             difficult to interpret.  This option will preserve the original
             source's indentation.

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

     Directory comparison options:

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

     --rr      causes application of ddiiffff recursively to common subdirectories
             encountered.

     --ss      causes ddiiffff to report files which are the same, which are other-
             wise not mentioned.

     --SS_n_a_m_e  re-starts a directory ddiiffff in the middle beginning with file
             _n_a_m_e.

     If both arguments are directories, ddiiffff sorts the contents of the direc-
     tories by name, and then runs the regular file ddiiffff algorithm, producing
     a change list, on text files which are different.  Binary files which
     differ, common subdirectories, and files which appear in only one direc-
     tory are described as such.

     If only one of _f_i_l_e_1 and _f_i_l_e_2 is a directory, ddiiffff is 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-directory
     file.

     If either _f_i_l_e_1 or _f_i_l_e_2 is `--', the standard input is used in its place.

   OOuuttppuutt SSttyyllee
     The default (without --ee, --cc, or --nn options) output contains lines of
     these forms, where _X_X, _Y_Y, _Z_Z, _Q_Q are line numbers respective of file or-
     der.

     XXaaYY        At (the end of) line _X_X of _f_i_l_e_1, append the contents of
                  line _Y_Y of _f_i_l_e_2 to make them equal.
     XXaaYY,ZZ     Same as above, but append the range of lines, _Y_Y through _Z_Z
                  of _f_i_l_e_2 to line _X_X of file1.
     XXddYY        At line _X_X delete the line. The value _Y_Y tells to which line
                  the change would bring _f_i_l_e_1 in line with _f_i_l_e_1.
     XX,YYddZZ     Delete the range of lines _X_X through _Y_Y in _f_i_l_e_1.
     XXccYY        Change the line _X_X in _f_i_l_e_1 to the line _Y_Y in _f_i_l_e_2_.
     XX,YYccZZ     Replace the range of specified lines with the line _Z_Z.
     XX,YYccZZ,QQ  Replace the range _X_X,YY from _f_i_l_e_1 with the range _Z_Z,QQ from
                  _f_i_l_e_2.

     These lines resemble ed(1) subcommands to convert _f_i_l_e_1 into _f_i_l_e_2. The
     line numbers before the action letters pertain to _f_i_l_e_1; those after per-
     tain to _f_i_l_e_2. Thus, by exchanging aa for dd and reading the line in re-
     verse order, one can also determine how to convert _f_i_l_e_2 into _f_i_l_e_1. As
     in ed(1),  identical pairs (where num1 = num2) are abbreviated as a sin-
     gle number.

EENNVVIIRROONNMMEENNTT
     TMPDIR  If the environment variable TMPDIR exists, ddiiffff will use the di-
             rectory specified by TMPDIR as the temporary directory.

FFIILLEESS

     /tmp/d?????
     /usr/bin/diffh  Alternate algorithm version (used by option --hh).
     /usr/bin/diff   for directory diffs
     /usr/bin/pr     used by the --ll option.

SSEEEE AALLSSOO
     cmp(1),  cc(1),  comm(1),  ed(1),  diff3(1)

DDIIAAGGNNOOSSTTIICCSS
     The ddiiffff utility exits with one of the following values:

           0       No differences were found.
           1       Differences were found.
           >1      An error occurred.

BBUUGGSS
     The --ff and --ee options do not provide special handling for lines on which
     the first and only character is ``.''. This can cause problems for ed(1).


     When comparing directories with the --bb, --ww or --ii options specified, ddiiffff
     first compares the files ala _c_m_p, and then decides to run the ddiiffff 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 dif-
     ferences are insignificant white space or case differences.

HHIISSTTOORRYY
     A ddiiffff command appeared in Version 6 AT&T UNIX.

4th Berkeley Distribution        June 30, 1993                               3