2DIFF(1) General Commands Manual 2DIFF(1) NAME 2diff - 2.11BSD differential file and directory comparator SYNOPSIS 2diff [ -l ] [ -r ] [ -s ] [ -cefhn ] [ -biwt ] dir1 dir2 2diff [ -cefhn ] [ -biwt ] file1 file2 2diff [ -Dstring ] [ -biw ] file1 file2 DESCRIPTION If both arguments are directories, 2diff sorts the contents of the directo- ries by name, and then runs the regular file 2diff algorithm (described be- low) on text files which are different. Binary files which differ, common subdirectories, and files which appear in only one directory are listed. Options when comparing directories are: -l long output format; each text file 2diff is piped through pr(1) to paginate it, other differences are remembered and summarized after all text file differences are reported. -r causes application of 2diff recursively to common subdirectories en- countered. -s causes 2diff to report files which are the same, which are otherwise not mentioned. -Sname starts a directory 2diff in the middle beginning with file name. When run on regular files, and when comparing text files which differ dur- ing directory comparison, 2diff tells what lines must be changed in the files to bring them into agreement. Except in rare circumstances, 2diff finds a smallest sufficient set of file differences. If neither file1 nor file2 is a directory, then either may be given as `-', in which case the standard input is used. If file1 is a directory, then a file in that di- rectory whose file-name is the same as the file-name of file2 is used (and vice versa). There are several options for output format; the default output format con- tains lines of these forms: n1 a n3,n4 n1,n2 d n3 n1,n2 c n3,n4 These lines resemble ed commands to convert file1 into file2. The numbers after the letters pertain to file2. In fact, by exchanging `a' for `d' and reading backward one may ascertain equally how to convert file2 into 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 sec- ond file flagged by `>'. Except for -b, -w, -i or -t which may be given with any of the others, the following options are mutually exclusive: -e produces a script of a, c and d commands for the editor ed, which will recreate file2 from file1. In connection with -e, the fol- lowing shell program may help maintain multiple versions of a file. Only an ancestral file ($1) and a chain of version-to-ver- sion ed scripts ($2,$3,...) made by 2diff need be on hand. A `latest version' appears on the standard output. (shift; cat $*; echo '1,$p') | ed - $1 Extra commands are added to the output when comparing directories with -e, so that the result is a sh(1) script for converting text files which are common to the two directories from their state in dir1 to their state in dir2. -f produces a script similar to that of -e, not useful with ed, and in the opposite order. -n produces a script similar to that of -e, but in the opposite order and with a count of changed lines on each insert or delete com- mand. This is the form used by rcsdiff(1). -c produces a diff with lines of context. The default is to present 3 lines of context and may be changed, e.g to 10, by -c10. With -c the output format is modified slightly: the output beginning with identification of the files involved and their creation dates and then each change is separated by a line with a dozen *'s. The lines removed from file1 are marked with `- '; those added to file2 are marked `+ '. Lines which are changed from one file to the other are marked in both files with with `! '. Changes which lie within <context> lines of each other are grouped together on output. (This is a change from the previous ``2diff -c'' but the resulting output is usually much easier to inter- pret.) -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. -Dstring causes 2diff to create a merged version of file1 and file2 on the standard output, 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 file2. -b causes trailing blanks (spaces and tabs) to be ignored, and other strings of blanks to compare equal. -w is similar to -b but causes whitespace (blanks and tabs) to be to- tally ignored. E.g., ``if ( a == b )'' will compare equal to ``if(a==b)''. -i ignores the case of letters. E.g., ``A'' will compare equal to ``a''. -t will expand tabs in output lines. Normal or -c output adds char- acter(s) to the front of each line which may screw up the indenta- tion of the original source lines and make the output listing dif- ficult to interpret. This option will preserve the original source's indentation. FILES /tmp/d????? /usr/local/libexec/2diffh for -h /usr/local/bin/2diff for directory diffs /usr/bin/pr SEE ALSO cmp(1), cc(1), comm(1), ed(1), diff3(1) DIAGNOSTICS Exit status is 0 for no differences, 1 for some, 2 for trouble. BUGS Editing scripts produced under the -e or -f option are naive about creating lines consisting of a single `.'. When comparing directories with the -b, -w or -i options specified, 2diff first compares the files ala cmp, and then decides to run the 2diff algo- rithm if they are not equal. This may cause a small amount of spurious output if the files then turn out to be identical because the only differ- ences are insignificant blank string or case differences. 4th Berkeley Distribution October 21, 1996 2DIFF(1)
NAME | SYNOPSIS | DESCRIPTION | FILES | SEE ALSO | DIAGNOSTICS | BUGS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=2diff&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>
