mirror of
https://github.com/opnsense/src.git
synced 2026-02-15 00:34:33 -05:00
387 lines
8.9 KiB
Groff
387 lines
8.9 KiB
Groff
.\" Copyright (c) 1980, 1990, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)diff.1 8.1 (Berkeley) 6/30/93
|
|
.\"
|
|
.Dd June 30, 1993
|
|
.Dt DIFF 1
|
|
.Os BSD 4
|
|
.Sh NAME
|
|
.Nm diff
|
|
.Nd differential file and directory comparator
|
|
.Sh SYNOPSIS
|
|
.Nm diff
|
|
.Op Fl cefhn
|
|
.Op Fl biwt
|
|
.Ar file1 file2
|
|
.Nm diff
|
|
.Op Fl D Ns Ar string
|
|
.Op Fl biw
|
|
.Ar file1 file2
|
|
.Nm diff
|
|
.Op Fl l
|
|
.Op Fl r
|
|
.Op Fl s
|
|
.Op Fl cefhn
|
|
.Op Fl biwt
|
|
.Op Fl S Ns Ar name
|
|
.Ar dir1 dir2
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm diff
|
|
utility compares the contents of
|
|
.Ar file1
|
|
and
|
|
.Ar file2
|
|
and writes to the standard output the list of changes necessary to
|
|
convert one file into the other.
|
|
No output is produced if the files are identical.
|
|
.Pp
|
|
Output options (mutually exclusive):
|
|
.Bl -tag -width Ds
|
|
.It Fl 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
|
|
.Fl c10 .
|
|
With
|
|
.Fl 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
|
|
.Ar file1
|
|
are marked with `\(mi '; those added to
|
|
.Ar file2
|
|
are marked `+ '. Lines which are changed from one
|
|
file to the other are marked in both files with `! '.
|
|
Changes which lie within <context> lines of each other are grouped
|
|
together on output. (This is a change from the previous ``diff -c''
|
|
but the resulting output is usually much easier to interpret.)
|
|
.It Fl e
|
|
produces output in a form suitable as input for the editor utility,
|
|
.Xr ed 1 ,
|
|
which can then be used to convert file1 into file2.
|
|
.Pp
|
|
Extra commands are added to the output when comparing directories with
|
|
.Fl e ,
|
|
so that the result is a
|
|
.Xr sh 1
|
|
script for converting text files which are common to the two directories
|
|
from their state in
|
|
.Ar dir1
|
|
to their state in
|
|
.Ar dir2 .
|
|
.It Fl f
|
|
identical output to that of the
|
|
.Fl e
|
|
flag, but in reverse order. It cannot
|
|
be digested by
|
|
.Xr ed 1 .
|
|
.It Fl h
|
|
Invokes an alternate algorithm which can handle files of very long lengths.
|
|
There is a trade off. The algorithm can only deal with changes which are
|
|
clearly delimited and brief. Long sections of changes and overlaps will
|
|
confuse it.
|
|
.It Fl n
|
|
produces a script similar to that of
|
|
.Fl e ,
|
|
but in the opposite order and with a count of changed lines on each
|
|
insert or delete command. This is the form used by
|
|
.Xr rcsdiff 1 .
|
|
.It Fl D Ns Ar string
|
|
creates a merged version of
|
|
.Ar file1
|
|
and
|
|
.Ar file2
|
|
on the standard output, with C preprocessor controls included so that
|
|
a compilation of the result without defining
|
|
.Ar string
|
|
is equivalent
|
|
to compiling
|
|
.Ar file1 ,
|
|
while defining
|
|
.Ar string
|
|
will yield
|
|
.Ar file2 .
|
|
.El
|
|
.Pp
|
|
Comparison options:
|
|
.Bl -tag -width Ds
|
|
.It Fl b
|
|
causes trailing blanks (spaces and tabs) to be ignored, and other
|
|
strings of blanks to compare equal.
|
|
.It Fl i
|
|
ignores the case of letters. E.g., ``A'' will compare equal to ``a''.
|
|
.It Fl t
|
|
will expand tabs in output lines. Normal or
|
|
.Fl c
|
|
output adds character(s) to the front of each line which may screw up
|
|
the indentation of the original source lines and make the output listing
|
|
difficult to interpret. This option will preserve the original source's
|
|
indentation.
|
|
.It Fl w
|
|
is similar to
|
|
.Fl b
|
|
but causes whitespace (blanks and tabs) to be totally ignored. E.g.,
|
|
``if\ (\ a\ ==\ b\ )'' will compare equal to ``if(a==b)''.
|
|
.El
|
|
.Pp
|
|
Directory comparison options:
|
|
.Bl -tag -width Ds
|
|
.It Fl l
|
|
long output format; each text file
|
|
.Nm diff Ns \'d
|
|
is piped through
|
|
.Xr pr 1
|
|
to paginate it,
|
|
other differences are remembered and summarized
|
|
after all text file differences are reported.
|
|
.It Fl r
|
|
causes application of
|
|
.Nm diff
|
|
recursively to common subdirectories encountered.
|
|
.It Fl s
|
|
causes
|
|
.Nm diff
|
|
to report files which are the same, which are otherwise not mentioned.
|
|
.It Fl S Ns Ar name
|
|
re-starts a directory
|
|
.Nm diff
|
|
in the middle beginning with file
|
|
.Ar name .
|
|
.El
|
|
.Pp
|
|
If both arguments are directories,
|
|
.Nm diff
|
|
sorts the contents of the directories by name, and then runs the
|
|
regular file
|
|
.Nm diff
|
|
algorithm, producing a change list,
|
|
on text files which are different.
|
|
Binary files which differ,
|
|
common subdirectories, and files which appear in only one directory
|
|
are described as such.
|
|
.Pp
|
|
If only one of
|
|
.Ar file1
|
|
and
|
|
.Ar file2
|
|
is a directory,
|
|
.Nm diff
|
|
is 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.
|
|
.Pp
|
|
If either
|
|
.Ar file1
|
|
or
|
|
.Ar file2
|
|
is
|
|
.Sq Fl ,
|
|
the standard input is
|
|
used in its place.
|
|
.Ss Output Style
|
|
The default (without
|
|
.Fl e ,
|
|
.Fl c ,
|
|
or
|
|
.Fl n
|
|
.\" -C
|
|
options)
|
|
output contains lines of these forms, where
|
|
.Va XX , YY , ZZ , QQ
|
|
are line numbers respective of file order.
|
|
.Pp
|
|
.Bl -tag -width "XX,YYcZZ,QQ" -compact
|
|
.It Li XX Ns Ic a Ns Li YY
|
|
At (the end of) line
|
|
.Va XX
|
|
of
|
|
.Ar file1 ,
|
|
append the contents
|
|
of line
|
|
.Va YY
|
|
of
|
|
.Ar file2
|
|
to make them equal.
|
|
.It Li XX Ns Ic a Ns Li YY,ZZ
|
|
Same as above, but append the range of lines,
|
|
.Va YY
|
|
through
|
|
.Va ZZ
|
|
of
|
|
.Ar file2
|
|
to line
|
|
.Va XX
|
|
of file1.
|
|
.It Li XX Ns Ic d Ns Li YY
|
|
At line
|
|
.Va XX
|
|
delete
|
|
the line. The value
|
|
.Va YY
|
|
tells to which line the change
|
|
would bring
|
|
.Ar file1
|
|
in line with
|
|
.Ar file1 .
|
|
.It Li XX,YY Ns Ic d Ns Li ZZ
|
|
Delete the range of lines
|
|
.Va XX
|
|
through
|
|
.Va YY
|
|
in
|
|
.Ar file1 .
|
|
.It Li XX Ns Ic c Ns Li YY
|
|
Change the line
|
|
.Va XX
|
|
in
|
|
.Ar file1
|
|
to the line
|
|
.Va YY
|
|
in
|
|
.Ar file2.
|
|
.It Li XX,YY Ns Ic c Ns Li ZZ
|
|
Replace the range of specified lines with the line
|
|
.Va ZZ .
|
|
.It Li XX,YY Ns Ic c Ns Li ZZ,QQ
|
|
Replace the range
|
|
.Va XX , Ns YY
|
|
from
|
|
.Ar file1
|
|
with the range
|
|
.Va ZZ , Ns QQ
|
|
from
|
|
.Ar file2 .
|
|
.El
|
|
.Pp
|
|
These lines resemble
|
|
.Xr ed 1
|
|
subcommands to convert
|
|
.Ar file1
|
|
into
|
|
.Ar file2 .
|
|
The line numbers before the action letters pertain to
|
|
.Ar file1 ;
|
|
those after pertain to
|
|
.Ar file2 .
|
|
Thus, by exchanging
|
|
.Ic a
|
|
for
|
|
.Ic d
|
|
and reading the line in reverse order, one can also
|
|
determine how to convert
|
|
.Ar file2
|
|
into
|
|
.Ar file1 .
|
|
As in
|
|
.Xr ed 1 ,
|
|
identical
|
|
pairs (where num1 = num2) are abbreviated as a single
|
|
number.
|
|
.Sh ENVIRONMENT
|
|
.Bl -tag -width TMPDIR
|
|
.It Ev TMPDIR
|
|
If the environment variable
|
|
.Ev TMPDIR
|
|
exists,
|
|
.Nm diff
|
|
will use the directory specified by
|
|
.Ev TMPDIR
|
|
as the temporary directory.
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width /usr/bin/diffh -compact
|
|
.It Pa /tmp/d?????
|
|
.It Pa /usr/bin/diffh
|
|
Alternate algorithm version (used by option
|
|
.Fl h ) .
|
|
.It Pa /usr/bin/diff
|
|
for directory diffs
|
|
.It Pa /usr/bin/pr
|
|
used by the
|
|
.Fl l
|
|
option.
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr cmp 1 ,
|
|
.Xr cc 1 ,
|
|
.Xr comm 1 ,
|
|
.Xr ed 1 ,
|
|
.Xr diff3 1
|
|
.br
|
|
.ne 1i
|
|
.Sh DIAGNOSTICS
|
|
The
|
|
.Nm diff
|
|
utility exits with one of the following values:
|
|
.Pp
|
|
.Bl -tag -width Ds -compact -offset indent
|
|
.It \&0
|
|
No differences were found.
|
|
.It \&1
|
|
Differences were found.
|
|
.It "\&>\&1"
|
|
An error occurred.
|
|
.El
|
|
.Sh BUGS
|
|
The
|
|
.Fl f
|
|
and
|
|
.Fl e
|
|
options
|
|
do not provide special handling for lines on which the
|
|
first and only character is
|
|
.Dq Li \&. .
|
|
This can cause problems for
|
|
.Xr ed 1 .
|
|
.Pp
|
|
When comparing directories with the
|
|
.Fl b ,
|
|
.Fl w
|
|
or
|
|
.Fl i
|
|
options specified,
|
|
.Nm diff
|
|
first compares the files ala
|
|
.Ar cmp ,
|
|
and then decides to run the
|
|
.Nm diff
|
|
algorithm 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 differences are
|
|
insignificant white space or case differences.
|
|
.Sh HISTORY
|
|
A
|
|
.Nm
|
|
command appeared in
|
|
.At v6 .
|