Hamilton LaboratoriesHamilton C shell 2012User guideExternal utilities


Oregon Coast

Previous | Next

        Compare Files or Directories

Usage:  diff [-bBeEfhiNqrsvw!-] [-m minmatch] [-n maxbest] [-o maxwindow]
                 [-Dstring] [-dstring] oldpath newpath

   diff produces a list of differences between two files or
   directories.  The working assumption is that newpath is a
   newer version of whatever's in oldpath.  If they're files,
   diff assumes they contain ascii text but if it encounters a
   file containing lots of binary data, it switches to a binary
   comparison mode to avoid dumping gibberish to the screen.

   Comparing files, diff looks for minimal sections of change.
   Each difference is shown as an add, delete or change with the
   appropriate line numbers or line number ranges for  each file.
   Following are texts of the differing section.  Lines that have
   been deleted are flagged with '<'; lines that have been added
   are flagged with '>'.  Alternately, diff can be used to produce
   merged listings with #ifdefs for the C compiler or highlighting
   for quick visual scanning.

   The algorithm for comparing files is to maintain sliding
   windows into each of the two files, adding new lines to each
   window until there is a matching sequence of some minimal
   number of lines at the bottom of each window.  That minimum
   can be configured via the -m option.

   Once that minimal match is found, diff begins to compare the
   two windows in an attempt to minimize the number of lines in
   each that cannot be matched against the other.  If the combined
   total number of lines in the two windows is less than some
   heuristic limit, set via the -n option, diff will do this
   comparison with a recursive algorithm guaranteed to find the
   absolute best solution.  But because the computation involved
   in this approach grows very quickly as the number of lines
   increases, diff switches to a heuristic approach for more
   complex window comparisons, breaking the windows down into
   smaller segments against which the exhaustive approach can
   be used.

   Comparing directories, diff builds lists of all the files
   they contain, searching all the way down through the tree.
   The lists are sorted, then compared.  If the same filename
   exists in each directory tree, a quick binary comparison is
   normally made of whether they contain the same or different
   data.  If -r is specified, the diff text comparison is done
   recursively the whole way down the two trees.

   If one of the arguments to diff is a file and the other is a
   directory, diff will look for and compare against a file of
   that same name in the directory.


   -b           Blank spaces of any length compare equal.  Ignore
                any leading or trailing white space on each line.
   -B           Binary comparison even on text files.
   -Dstring     Produce a merged #ifdef'ed listing, with the string
                being defined meaning use the older version. (Newer
                version is intentionally the default.)
   -dstring     Same as -Dstring, but add comments of the form
                /* string */ to the #else and #endif directives
                that are generated.
   -e           Produce an ed script which, when a w (the write
                command) is appended to it, can be used to
                transform the first file into the second.
   -E           Turn off highlighting of empty lines.  By default,
                if highlighting is used to show areas of change,
                even empty lines will have ANSI sequences at the
                beginning and end so that if more is used to display
                the output with the default color stretch mode on,
                empty lines will still be highlighted.
   -f           Force diff-style comparison to continue even on files
                that appear to contain binary data.
   -h           Help.  (This screen.)
   -i           Ignore character case.
   -m minmatch  Minimum match length to insist on before resynchro-
                nizing two files.  (Default is 20 lines.)
   -n maxbest   Maximum total number of lines in the two windows
                against which diff will attempt an absolute best
                match.  If the total is larger, it will attempt
                to break the problem down with heuristics.
                (Default is 15 lines.)
   -N           Ignore differences in line endings.  NewLine and
                CarriageReturn-NewLine endings will be considered
   -o maxwindow Maximum total number of lines that diff will
                allow to be collected into the two windows before
                it gives up looking for a resynchronizing match.
                (Default is 4000 lines.)
   -q           Quiet:  suppress warnings about files containing
                binary data.
   -r           Recursively diff the contents of any subdirectories.
   -s           Add spaces to separate the a (add), c (change) or d
                (delete) characters from the line numbers in a diff
                report for better readability.
   -v           Verbose listing of all the contents of any entire
                subdirectory added or deleted.
   -w           White space is ignored totally.
   -!           Produce merged, highlighted version.  Text that's
                unchanged is normal, deleted text is red, new text
                is green.
   --           End of options.


   You may set your own choices for screen colors using these
   environmental variables:

      Name         Use                      Default
      COLORS       Normal screen colors     <null string>
      ADDITIONS    Lines added              Bright White on Green
      DELETIONS    Lines deleted            Bright White on Red

   Colors recognized are black, red, green, yellow, blue, magenta
   (or red blue), cyan (or blue green) or white.  Foreground and
   background colors may also be bright, dim or reverse.  The names
   of the colors and the words bright, dim, reverse and on may be
   in either upper or lower or mixed case.

   Either or both the foreground and background colors may be
   specified; if you don't specify a value, it's considered
   transparent and inherits the color underneath it.   ADDITIONS
   and DELETIONS inherit from COLORS.  If COLORS is null, diff
   uses the current screen colors it finds at startup.

Previous | Next