unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Page:
Section:
Apropos / Subsearch:
optional field

diff(1)                          User Commands                         diff(1)



NAME
       diff - compare two files

SYNOPSIS
       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

DESCRIPTION
       The diff utility will compare the contents of file1 and file2 and write
       to  standard  output  a list of changes necessary 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
       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, 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 `<&lt;', then all the lines that are affected in
       the second file flagged by `>&gt;'.

OPTIONS
       The following options are supported:

       -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 com-
                       pare equal to `a'.



       -t              Expands <&lt;TAB>&gt; 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 (<&lt;SPACE>&gt; and <&lt;TAB>&gt; 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 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 context.



       -D string       Creates a merged version of file1 and file2 with C pre-
                       processor controls included so that  a  compilation  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 pro-
                       gram 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 out-
                       put.


                       (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, 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 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  differ-
                       ent, 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 context.



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



       -s              Reports files that are identical. These identical 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           A path name of a file or directory to be  compared.  If
       file2           either  file1 or file2 is -, the standard input will be
                       used in its place.




       directory1      A path name of a directory to be compared.
       directory2



       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 directory 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 cal-
                culating 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.



       >&gt;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 attributes:


       tab()    allbox;    cw(2.750000i)|     cw(2.750000i)     lw(2.750000i)|
       lw(2.750000i).    ATTRIBUTE   TYPEATTRIBUTE  VALUE  AvailabilitySUNWesu
       CSIEnabled Interface StabilityStandard


SEE ALSO
       bdiff(1),  cmp(1),  comm(1),  dircmp(1),  ed(1),  pr(1),   sdiff(   1),
       attributes(5), environ(5), largefile(5), standards(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.



SunOS 5.10                        22 Sep 2004                          diff(1)