User Commands                                             diff(1)


NAME

     diff - compare two files


SYNOPSIS

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

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

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

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


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. Except in rare circumstances, diff finds a smallest
     sufficient set of file differences. No output will  be  pro-
     duced 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  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

     The following options are supported:

     -a   Treat all files as ASCII text.  Normally diff will sim-
          ply  print  `Binary  files ... and ... differ' if files

SunOS 5.11           Last change: 2016/10/19                    1


User Commands                                             diff(1)

          contain binary characters.  Use of this  option  forces
          diff to produce a diff.

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

     -B   Ignores changes that just  inserted  or  deleted  blank
          (empty) lines.

     -i   Ignores the case of letters. For example, `A' will com-
          pare equal to `a'.

     -N   New file mode, treat absent files as empty.  If diff(1)
          prints  time stamps for files, the time stamp for miss-
          ing files will refer to January 1 1970 00:00:00 GMT.

     -p   With unified and context diffs, show with  each  change
          the  first  40  characters  of the last line before the
          context beginning with a letter,  an  underscore  or  a
          dollar sign.  For C source code following standard lay-
          out conventions, this will show the  prototype  of  the
          function the change applies to.

     -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  characters)  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 for-
                 mat 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

SunOS 5.11           Last change: 2016/10/19                    2


User Commands                                             diff(1)

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

     -D string   Creates a merged version of file1 and file2 with
                 C  preprocessor controls included so that a com-
                 pilation of the result without  defining  string
                 is equivalent to compiling file1, while defining
                 string will yield file2.

     -e          Produces a script of only a, c, and  d  commands
                 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 stan-
                 dard 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  unlimited
                 length.  Options -c, -C, -D, -e, -f, -q, -u, and
                 -n are unavailable with -h.  diff does not  des-
                 cend 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.

     -q          Just print a single line message when the  files
                 differ. Does not output a list of changes.

SunOS 5.11           Last change: 2016/10/19                    3


User Commands                                             diff(1)

     -u          Produces a listing  of  differences  with  three
                 lines  of context. The output is similar to that
                 of the -c option, except  that  the  context  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
                 identification 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 con-
                 text.

     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  identi-
                 cal files 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.

SunOS 5.11           Last change: 2016/10/19                    4


User Commands                                             diff(1)

     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.


USAGE

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


EXAMPLES

     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

       1c1

       < Mon Jul  2 13:12:16 PDT 1990

       ---

       > Tue Jun 19 21:41:39 PDT 1990


ENVIRONMENT VARIABLES

     See environ(5) for descriptions of the following environment
     variables  that affect the execution of diff:  LANG, LC_ALL,
     LC_CTYPE, LC_MESSAGES, LC_TIME, and NLSPATH.

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

SunOS 5.11           Last change: 2016/10/19                    5


User Commands                                             diff(1)


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


ATTRIBUTES

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

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


SEE ALSO

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

     James W. Hunt and M. Douglas McIlroy, "An Algorithm for Dif-
     ferential  File  Comparison",  Computing  Science  Technical
     Report, Bell Laboratories 41, June 1976


NOTES

     Editing scripts produced under the -f option are naive about
     creating  lines  consisting of a single period (.).  Editing
     scripts produced under the -e option  contain  a  workaround
     for the problem that is understood by patch(1).

SunOS 5.11           Last change: 2016/10/19                    6


User Commands                                             diff(1)

     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.


AUTHORS

     The diff(1) program was initially written by Douglas McIlroy
     at Bell Labs in 1974.  The SVr4 release was written by vari-
     ous authors at AT&T in 1989.  The diff(1) programm was later
     maintained  by  various people at AT&T and Sun Microsystems.
     Since 2006, it is maintained by Joerg Schilling.

SunOS 5.11           Last change: 2016/10/19                    7


Man(1) output converted with man2html


FhG Schily's Home VED powered