9base

revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log | Files | Refs | README | LICENSE

diff.1 (2959B)


      1 .TH DIFF 1 
      2 .SH NAME
      3 diff \- differential file comparator
      4 .SH SYNOPSIS
      5 .B diff
      6 [
      7 .B -acefmnbwr
      8 ] file1 ... file2
      9 .SH DESCRIPTION
     10 .I Diff
     11 tells what lines must be changed in two files to bring them
     12 into agreement.
     13 If one file
     14 is a directory,
     15 then a file in that directory with basename the same as that of
     16 the other file is used.
     17 If both files are directories, similarly named files in the
     18 two directories are compared by the method of 
     19 .I diff
     20 for text
     21 files and
     22 .IR cmp (1)
     23 otherwise.
     24 If more than two file names are given, then each argument is compared
     25 to the last argument as above.
     26 The 
     27 .B -r
     28 option causes
     29 .I diff
     30 to process similarly named subdirectories recursively.
     31 When processing more than one file, 
     32 .I diff
     33 prefixes file differences with a single line
     34 listing the two differing files, in the form of
     35 a 
     36 .I diff
     37 command line.
     38 The
     39 .B -m
     40 flag causes this behavior even when processing single files.
     41 .PP
     42 The normal output contains lines of these forms:
     43 .IP "" 5
     44 .I n1
     45 .B a
     46 .I n3,n4
     47 .br
     48 .I n1,n2
     49 .B d
     50 .I n3
     51 .br
     52 .I n1,n2
     53 .B c
     54 .I n3,n4
     55 .PP
     56 These lines resemble
     57 .I ed
     58 commands to convert
     59 .I file1
     60 into
     61 .IR file2 .
     62 The numbers after the letters pertain to
     63 .IR file2 .
     64 In fact, by exchanging `a' for `d' and reading backward
     65 one may ascertain equally how to convert 
     66 .I file2
     67 into
     68 .IR file1 .
     69 As in 
     70 .IR ed ,
     71 identical pairs where
     72 .I n1
     73 =
     74 .I n2
     75 or
     76 .I n3
     77 =
     78 .I n4
     79 are abbreviated as a single number.
     80 .PP
     81 Following each of these lines come all the lines that are
     82 affected in the first file flagged by `<', 
     83 then all the lines that are affected in the second file
     84 flagged by `>'.
     85 .PP
     86 The
     87 .B -b
     88 option causes
     89 trailing blanks (spaces and tabs) to be ignored
     90 and other strings of blanks to compare equal.
     91 The
     92 .B -w
     93 option causes all white-space to be removed from input lines
     94 before applying the difference algorithm.
     95 .PP
     96 The
     97 .B -n
     98 option prefixes each range with 
     99 .IB file : \fR
    100 and inserts a space around the 
    101 .BR a ,
    102 .BR c ,
    103 and
    104 .B d
    105 verbs.
    106 The
    107 .B -e
    108 option produces a script of
    109 .I "a, c"
    110 and 
    111 .I d
    112 commands for the editor
    113 .IR ed ,
    114 which will recreate
    115 .I file2
    116 from
    117 .IR file1 .
    118 The
    119 .B -f
    120 option produces a similar script,
    121 not useful with
    122 .IR ed ,
    123 in the opposite order. It may, however, be
    124 useful as input to a stream-oriented post-processor.
    125 .PP
    126 The
    127 .B -c
    128 option includes three lines of context around each
    129 change, merging changes whose contexts overlap.
    130 The
    131 .B -a
    132 flag displays the entire file as context.
    133 .PP
    134 Except in rare circumstances,
    135 .I diff
    136 finds a smallest sufficient set of file
    137 differences.
    138 .SH FILES
    139 .B /tmp/diff[12]
    140 .SH SOURCE
    141 .B \*9/src/cmd/diff
    142 .SH "SEE ALSO"
    143 .IR cmp (1),
    144 .IR comm (1),
    145 .IR ed (1)
    146 .SH DIAGNOSTICS
    147 Exit status is the empty string
    148 for no differences,
    149 .L some
    150 for some, 
    151 and
    152 .L error
    153 for trouble.
    154 .SH BUGS
    155 Editing scripts produced under the
    156 .BR -e " or"
    157 .BR -f " option are naive about"
    158 creating lines consisting of a single `\fB.\fR'.
    159 .PP
    160 When running
    161 .I diff
    162 on directories, the notion of what is a text
    163 file is open to debate.