Unix‎ > ‎Solaris‎ > ‎Solaris man pages‎ > ‎1‎ > ‎


     diff - compare two files

     diff [-bitw] [-c | -e | -f | -h | -n | -u]  file1 file2

     diff [-bitw] [-C number | -U number]  file1 file2

     diff [-bitw] [-D string] file1 file2

     diff [-bitw] [-c | -e | -f | -h | -n | -u]  [-l]  [-r]  [-s]
     [-S name] directory1 directory2

     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.   Except  in rare circumstances, diff finds a smal-
     lest sufficient set of file differences. No output  will  be
     produced if the files are identical.

     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 reading
     backward, file2 can be converted to file1. As in ed, identi-
     cal pairs, where n1=n2 or n3=n4, are abbreviated as a single

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

     The following options are supported:

     -b              Ignores trailing blanks  (spaces  and  tabs)
                     and   treats  other  strings  of  blanks  as

     -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
                     interpret.  This  option  will  preserve the
                     original source's indentation.

     -w              Ignores all blanks (<SPACE> and <TAB>  char-
                     acters)  and  treats  all  other  strings of
                     blanks   as   equivalent.    For    example,
                     `if ( a == b )'   will   compare   equal  to

     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. That is, 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  '-'.  The  lines  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

     -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

     -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 the  -e
                     option, the following shell program may help
                     maintain multiple versions of a  file.  Only
                     an  ancestral  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

     -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  unlim-
                     ited length. Options -c, -C, -D, -e, -f, and
                     -n are unavailable with -h.  diff  does  not
                     descend into directories with this option.

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

     -u              Produces a listing of differences with three
                     lines  of  context. The output is similar to
                     that of the -c option, except that the  con-
                     text is "unified". Removed and changed lines
                     in file1 are marked by  a  '-'  while  lines
                     added  or  changed  in file2 are marked by a
                     '+'. Both versions of changed  lines  appear
                     in  the  output,  while  added, removed, and
                     context lines appear only once. The identif-
                     ication  of  file1  and  file2 is different,
                     with "---" and  "+++"  being  printed  where
                     "***"  and  "---"  would  appear with the -c
                     option. Each change is separated by  a  line
                     of the form

                     @@ -n1,n2 +n3,n4 @@

     -U number       Produces a listing of differences  identical
                     to  that produced by -u with number lines of

     The following options are used for comparing directories:

     -l              Produces output in long format.  Before  the
                     diff,  each text file is piped through pr(1)
                     to  paginate  it.   Other  differences   are
                     remembered  and  summarized  after  all text
                     file differences are reported.

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

     -s              Reports  files  that  are  identical.  These
                     identical  files would not otherwise be men-

     -S name         Starts  a  directory  diff  in  the  middle,
                     beginning with the file name.

     The following operands are supported:

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

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

     See largefile(5) for the description of the behavior of diff
     when encountering files greater than or equal to 2 Gbyte ( 2
    **31 bytes).

     Example 1: Typical output of the diff command

     In the following command, dir1 is a directory  containing  a
     directory  named  x, dir2 is a directory containing a direc-
     tory named x, dir1/x and dir2/x  both  contain  files  named
     date.out, and dir2/x contains a file named y:

     example% diff -r dir1 dir2
     Common subdirectories: dir1/x and dir2/x

     Only in dir2/x: y

     diff -r dir1/x/date.out dir2/x/date.out


     < Mon Jul  2 13:12:16 PDT 1990


     > Tue Jun 19 21:41:39 PDT 1990

     See environ(5) for descriptions of the following environment
     variables  that  affect the execution of diff: LANG, LC_ALL,

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

     The following exit values are returned:

     0        No differences were found.

     1        Differences were found.

     >1       An error occurred.

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

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

     See attributes(5) for descriptions of the  following  attri-

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    | Availability                | SUNWesu                     |
    | CSI                         | Enabled                     |
    | Interface Stability         | Standard                    |

     bdiff(1), cmp(1), comm(1), dircmp(1), ed(1),  pr(1),  sdiff(
     1), attributes(5), environ(5), largefile(5), standards(5)

     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.

Man pages from Solaris 10 Update 8. See docs.sun.com and www.oracle.com for further documentation and Solaris information.