|
|
1.1 ! root 1: .TH DIFF 1 ! 2: .CT 1 files ! 3: .SH NAME ! 4: diff, diff3 \- differential file comparison ! 5: .SH SYNOPSIS ! 6: .B diff ! 7: [ ! 8: .I option ... ! 9: ] ! 10: .I file1 file2 ! 11: .PP ! 12: .B diff3 ! 13: [ ! 14: .B \-ex3 ! 15: ] ! 16: .I file1 file2 file3 ! 17: .SH DESCRIPTION ! 18: When run on regular files ! 19: .I diff ! 20: tells what lines must be changed in the files to bring them into agreement. ! 21: Except in rare circumstances, ! 22: .I diff ! 23: finds a smallest sufficient set of differences. ! 24: If neither file ! 25: is a directory, then one ! 26: may be ! 27: .LR - , ! 28: meaning the standard input. ! 29: If one file ! 30: is a directory, ! 31: then a file in that directory with basename the same as that of ! 32: the other file is used. ! 33: .PP ! 34: If both files are directories, ! 35: similarly named files in the two directories ! 36: are compared by the method of ! 37: .I diff ! 38: for text files and ! 39: .IR cmp (1) ! 40: otherwise. ! 41: Options when comparing directories are: ! 42: .TP ! 43: .B -r ! 44: Apply ! 45: .I diff ! 46: recursively to similarly named subdirectories. ! 47: .TP ! 48: .B -s ! 49: Report files that are the same (normally not mentioned). ! 50: .PP ! 51: There are several options for output format; ! 52: the default output format contains lines of these forms: ! 53: .IP ! 54: .IB n1 a ! 55: .IB n3 , n4 ! 56: .br ! 57: .IB n1 , n2 d ! 58: .I n3 ! 59: .br ! 60: .IB n1 , n2 c ! 61: .IB n3 , n4 ! 62: .PP ! 63: These lines resemble ! 64: .I ed ! 65: commands to convert ! 66: .I file1 ! 67: into ! 68: .IR file2 . ! 69: The numbers after the letters pertain to ! 70: .IR file2 . ! 71: In fact, by exchanging ! 72: .L a ! 73: for ! 74: .L d ! 75: and reading backward ! 76: one may ascertain equally how to convert ! 77: .I file2 ! 78: into ! 79: .IR file1 . ! 80: As in ! 81: .I ed, ! 82: identical pairs where ! 83: .IR n1 = n2 ! 84: or ! 85: .I n3 = n4 ! 86: are abbreviated as a single number. ! 87: .PP ! 88: Following each of these lines come all the lines that are ! 89: affected in the first file flagged by ! 90: .LR < , ! 91: then all the lines that are affected in the second file ! 92: flagged by ! 93: .LR > . ! 94: .PP ! 95: Except for ! 96: .B -b, ! 97: which may be given with any of the others, ! 98: the following options are mutually exclusive: ! 99: .TP ! 100: .B -e ! 101: Produce a script of ! 102: .LR a , ! 103: .LR c , ! 104: and ! 105: .L d ! 106: for ! 107: .IR ed (1) ! 108: to recreate ! 109: .I file2 ! 110: from ! 111: .IR file1 . ! 112: When comparing directories, produce a ! 113: .IR sh (1) ! 114: script to convert text files common to the two directories. ! 115: .TP ! 116: .BI -c n ! 117: Include ! 118: .I n ! 119: extra lines of context with each set of differences. ! 120: The output format is modified: ! 121: the output begins with identification of the files involved and ! 122: their creation dates and changes are separated ! 123: by lines of *'s. ! 124: Lines removed from ! 125: .I file1 ! 126: are marked with ! 127: .LR - ; ! 128: those added to ! 129: .I file2 ! 130: are marked ! 131: .LR + . ! 132: Lines which are changed from one ! 133: file to the other are marked in both files with ! 134: .LR ! . ! 135: .TP ! 136: .B -h ! 137: Do a fast, half-hearted job, ! 138: useful only when changed stretches are short ! 139: and well separated, ! 140: but does work on files of unlimited length. ! 141: .TP ! 142: .B -b ! 143: Ignore trailing blanks (spaces and tabs) and treat other ! 144: strings of blanks as if they were a single space. ! 145: .PP ! 146: .I Diff3 ! 147: compares three versions of a file ! 148: and publishes the various disagreeing ranges of text. ! 149: One of the following indicators introduces each reported ! 150: difference. ! 151: .TP ! 152: .B ==== ! 153: All three files differ. ! 154: .TP ! 155: .BI ==== f ! 156: File ! 157: .I f ! 158: differs, where ! 159: .I f ! 160: is 1, 2, or 3. ! 161: .PP ! 162: Disagreeing fragments from the three files follow the ! 163: .B ==== ! 164: line, each identified by a ! 165: .IR diff -like ! 166: range indication: ! 167: .TP ! 168: .IB f : n1 a ! 169: File ! 170: .I f ! 171: lacks text that other files have; their text would ! 172: be appended after line ! 173: .I n1. ! 174: .TP ! 175: .IB f : n1 , n2 c ! 176: .br ! 177: .ns ! 178: .TP ! 179: .IB f : n1 c ! 180: Lines ! 181: .I n1 ! 182: through ! 183: .I n2 ! 184: (or line ! 185: .I n1 ! 186: only) of file ! 187: .I f ! 188: would have to be changed to agree with some other file. ! 189: The original contents follow, unless a higher-numbered file ! 190: has the same contents. ! 191: .PP ! 192: Under option ! 193: .BR -e , ! 194: .I diff3 ! 195: publishes a script for ! 196: .IR ed (1) ! 197: that will incorporate into ! 198: .I file1 ! 199: all changes between ! 200: .I file2 ! 201: and ! 202: .I file3, ! 203: i.e. the changes that normally would be flagged ! 204: .B ==== ! 205: and ! 206: .BR ====3 . ! 207: Option ! 208: .B \-x ! 209: (\fB\-3\fR) ! 210: produces a script to incorporate ! 211: only changes flagged ! 212: .B ==== ! 213: .RB ( ====3 ). ! 214: .SH EXAMPLES ! 215: .TP ! 216: .L ! 217: (cat diff0-1 diff1-2 diff2-3; echo '1,$p') | ed - file0 >file3 ! 218: An ancestral ! 219: .L file0 ! 220: has been kept along with a chain of version-to-version ! 221: difference files made thus: ! 222: .LR "diff -e file0 file1 >diff0-1" . ! 223: The shell command reconstructs the latest version. ! 224: .PP ! 225: .EX ! 226: if diff3 mod1 old mod2 | grep -s '^====$' ! 227: then : ! 228: else (diff3 -e mod1 old mod2; echo '1,$p') | ed - mod1 >new ! 229: fi ! 230: .EE ! 231: .PD0 ! 232: .IP ! 233: Compare two different modified versions with an old file. ! 234: If no modifications interfere with each other ! 235: .RI ( grep ! 236: finds no ! 237: .B ==== ! 238: lines), make a new file incorporating both modifications. ! 239: .PD ! 240: .SH FILES ! 241: .F /tmp/d* ! 242: .br ! 243: .F /usr/lib/diffh ! 244: for ! 245: .B -h ! 246: .br ! 247: .F /usr/lib/diff3 ! 248: .SH "SEE ALSO" ! 249: .IR cmp (1), ! 250: .IR comm (1), ! 251: .IR ed (1), ! 252: .IR idiff (1) ! 253: .SH DIAGNOSTICS ! 254: .I Diff ! 255: yields exit status is 0 for no differences, 1 for some, 2 for trouble. ! 256: .SH BUGS ! 257: Text lines that consist of a single `.' will ! 258: defeat options ! 259: .BR -e , ! 260: .BR -x , ! 261: and ! 262: .BR -3 . ! 263: .br ! 264: Superfluous output may result for files that differ ! 265: only in insignificant blanks when comparing directories ! 266: under option ! 267: .BR -b . ! 268: .br ! 269: Option ! 270: .B -c ! 271: is superfluous.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.