solaris - diff (1)



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


SYNOPSIS
     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


AVAILABILITY
     SUNWesu


DESCRIPTION
     The diff utility will compare  the  contents  of  file1  and
     file2  and write to standard output a list of changes neces-
     sary to convert file1 into  file2  .  This  list  should  be
     minimal.  No output will be produced if the files are ident-
     ical.

     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  read-
     ing  backward,  file2  can be converted to 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 second file flagged by `>'.


OPTIONS
     -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 compare 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 inter-
                    pret.  This option will preserve the original
                    source's indentation.

     -w              Ignores all blanks (SPACE  and  TAB  charac-
                    ters)  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  produced by -c with number lines of
                    context.

     -e              Produces a script of only a, c, and  d  com-
                    mands  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  ances-
                    tral  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  suffi-
     cient 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 -e and -f are una-
                    vailable with -h.

     -n              Produces a script similar to -e , but in the
                    opposite  order  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 preprocessor controls included so that
                    a compilation of the result without  defining
                    string  is  equivalent  to  compiling  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 remem-
                    bered  and  summarized  after  all  text file
                    differences are reported.

     -r              Applies diff recursively to common subdirec-
                    tories encountered.

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


OPERANDS
     The following operands are supported:

     file1
     file2       A path name of a file or directory  to  be  com-
                 pared.  If either file1 or file2 is -, the stan-
                 dard input will be used in its place.

     directory1
     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-directory file.


EXAMPLES
     If dir1 is a directory containing a directory named x,  dir2
     is  a  directory  containing a directory named x, dir1/x and
     dir2/x both contain files named date.out,  and  dir2/x  con-
     tains 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
          1c1
          < Mon Jul  2 13:12:16 PDT 1990
          ---
          > Tue Jun 19 21:41:39 PDT 1990


ENVIRONMENT
     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  timestamps  written  with  the  -C  and   -c
               options.

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


EXIT STATUS
     The following exit values are returned:

     0   No differences were found.

     1   Differences were found.

     >1  An error occurred.


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

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


SEE ALSO
     bdiff(1),  cmp(1),   comm(1),   dircmp(1),   ed(1),   pr(1),
     sdiff(1), environ(5)


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