1994-05-27 12:33:43 +00:00
|
|
|
.\" Copyright (c) 1987, 1990, 1993
|
|
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" This code is derived from software contributed to Berkeley by
|
|
|
|
.\" the Institute of Electrical and Electronics Engineers, Inc.
|
|
|
|
.\"
|
|
|
|
.\" 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.
|
2017-02-28 23:42:47 +00:00
|
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
1994-05-27 12:33:43 +00:00
|
|
|
.\" 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.
|
|
|
|
.\"
|
2021-09-23 05:17:07 +00:00
|
|
|
.Dd September 23, 2021
|
1994-05-27 12:33:43 +00:00
|
|
|
.Dt CMP 1
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm cmp
|
|
|
|
.Nd compare two files
|
|
|
|
.Sh SYNOPSIS
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
2006-12-19 10:34:14 +00:00
|
|
|
.Op Fl l | s | x
|
2021-09-23 05:46:30 +00:00
|
|
|
.Op Fl bhz
|
2021-09-23 05:43:32 +00:00
|
|
|
.Op Fl -ignore-initial Ns Cm = Ns Ar num1 Ns Op :num2
|
2021-09-23 05:26:52 +00:00
|
|
|
.Op Fl -bytes Ns Cm = Ns Ar num
|
1994-05-27 12:33:43 +00:00
|
|
|
.Ar file1 file2
|
|
|
|
.Op Ar skip1 Op Ar skip2
|
|
|
|
.Sh DESCRIPTION
|
1997-06-26 11:22:12 +00:00
|
|
|
The
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
1997-06-26 11:22:12 +00:00
|
|
|
utility compares two files of any type and writes the results
|
1994-05-27 12:33:43 +00:00
|
|
|
to the standard output.
|
|
|
|
By default,
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
1994-05-27 12:33:43 +00:00
|
|
|
is silent if the files are the same; if they differ, the byte
|
|
|
|
and line number at which the first difference occurred is reported.
|
|
|
|
.Pp
|
|
|
|
Bytes and lines are numbered beginning with one.
|
|
|
|
.Pp
|
|
|
|
The following options are available:
|
2006-12-19 10:34:14 +00:00
|
|
|
.Bl -tag -width indent
|
2021-09-23 05:46:30 +00:00
|
|
|
.It Fl b , Fl -print-bytes
|
|
|
|
Print each byte when a difference is found.
|
2005-08-23 13:13:13 +00:00
|
|
|
.It Fl h
|
2005-11-18 10:36:29 +00:00
|
|
|
Do not follow symbolic links.
|
2021-09-23 05:43:32 +00:00
|
|
|
.It Fl i Ar num1 Ns Oo :num2 Oc , Fl -ignore-initial= Ns Ar num1 Ns Op :num2
|
|
|
|
Skip
|
|
|
|
.Ar num1
|
|
|
|
bytes from
|
|
|
|
.Ar file1 ,
|
|
|
|
and optionally skip
|
|
|
|
.Ar num2
|
|
|
|
bytes from
|
|
|
|
.Ar file2 .
|
|
|
|
If
|
|
|
|
.Ar num2
|
|
|
|
is not specified, then
|
|
|
|
.Ar num1
|
|
|
|
is applied for both
|
|
|
|
.Ar file1
|
|
|
|
and
|
|
|
|
.Ar file2 .
|
2018-05-02 01:32:34 +00:00
|
|
|
.It Fl l , Fl -verbose
|
1994-05-27 12:33:43 +00:00
|
|
|
Print the byte number (decimal) and the differing
|
|
|
|
byte values (octal) for each difference.
|
2021-09-23 05:26:52 +00:00
|
|
|
.It Fl n Ar num , Fl -bytes= Ns num
|
|
|
|
Only compare up to
|
|
|
|
.Ar num
|
|
|
|
bytes.
|
2018-05-02 01:32:34 +00:00
|
|
|
.It Fl s , Fl -silent , Fl -quiet
|
1994-05-27 12:33:43 +00:00
|
|
|
Print nothing for differing files; return exit
|
|
|
|
status only.
|
2000-05-15 08:30:43 +00:00
|
|
|
.It Fl x
|
2001-07-15 08:06:20 +00:00
|
|
|
Like
|
2000-05-15 08:30:43 +00:00
|
|
|
.Fl l
|
|
|
|
but prints in hexadecimal and using zero as index
|
|
|
|
for the first byte in the files.
|
2000-07-14 16:54:59 +00:00
|
|
|
.It Fl z
|
|
|
|
For regular files compare file sizes first, and fail the comparison if they
|
|
|
|
are not equal.
|
1994-05-27 12:33:43 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The optional arguments
|
|
|
|
.Ar skip1
|
2001-07-15 08:06:20 +00:00
|
|
|
and
|
1994-05-27 12:33:43 +00:00
|
|
|
.Ar skip2
|
|
|
|
are the byte offsets from the beginning of
|
|
|
|
.Ar file1
|
|
|
|
and
|
|
|
|
.Ar file2 ,
|
|
|
|
respectively, where the comparison will begin.
|
2002-12-30 21:18:15 +00:00
|
|
|
The offset is decimal by default, but may be expressed as a hexadecimal
|
1994-05-27 12:33:43 +00:00
|
|
|
or octal value by preceding it with a leading ``0x'' or ``0''.
|
2021-09-23 05:17:07 +00:00
|
|
|
.Pp
|
|
|
|
.Ar skip1
|
|
|
|
and
|
|
|
|
.Ar skip2
|
|
|
|
may also be specified with SI size suffixes.
|
2006-12-19 10:34:14 +00:00
|
|
|
.Sh EXIT STATUS
|
1994-05-27 12:33:43 +00:00
|
|
|
The
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
1994-05-27 12:33:43 +00:00
|
|
|
utility exits with one of the following values:
|
|
|
|
.Bl -tag -width 4n
|
|
|
|
.It 0
|
|
|
|
The files are identical.
|
|
|
|
.It 1
|
|
|
|
The files are different; this includes the case
|
|
|
|
where one file is identical to the first part of
|
|
|
|
the other.
|
|
|
|
In the latter case, if the
|
|
|
|
.Fl s
|
|
|
|
option has not been specified,
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
1998-05-26 00:39:12 +00:00
|
|
|
writes to standard error that EOF was reached in the shorter
|
1994-05-27 12:33:43 +00:00
|
|
|
file (before any differences were found).
|
|
|
|
.It >1
|
|
|
|
An error occurred.
|
|
|
|
.El
|
2020-06-16 15:54:59 +00:00
|
|
|
.Sh EXAMPLES
|
2020-06-20 11:20:16 +00:00
|
|
|
Assuming a file named
|
|
|
|
.Pa example.txt
|
|
|
|
with the following contents:
|
2020-06-16 15:54:59 +00:00
|
|
|
.Bd -literal -offset indent
|
|
|
|
a
|
|
|
|
b
|
|
|
|
c
|
|
|
|
.Ed
|
|
|
|
.Pp
|
2020-06-20 11:20:16 +00:00
|
|
|
Compare stdin with
|
|
|
|
.Pa example.txt :
|
2020-06-16 15:54:59 +00:00
|
|
|
.Bd -literal -offset indent
|
|
|
|
$ echo -e "a\\nb\\nc" | cmp - example.txt
|
|
|
|
.Ed
|
|
|
|
.Pp
|
2020-06-20 11:20:16 +00:00
|
|
|
Same as above but introducing a change in the third byte of stdin.
|
2020-06-16 15:54:59 +00:00
|
|
|
Show the byte number (decimal) and differing byte (octal):
|
|
|
|
.Bd -literal -offset indent
|
|
|
|
$ echo -e "a\\nR\\nc" | cmp -l - example.txt
|
|
|
|
3 122 142
|
|
|
|
.Ed
|
|
|
|
.Pp
|
2020-06-20 11:20:16 +00:00
|
|
|
Compare file sizes of
|
|
|
|
.Pa example.txt
|
|
|
|
and
|
|
|
|
.Pa /boot/loader.conf
|
|
|
|
and return 1 if they are not equal.
|
2020-06-16 15:54:59 +00:00
|
|
|
Note that
|
|
|
|
.Fl z
|
|
|
|
can only be used with regular files:
|
|
|
|
.Bd -literal -offset indent
|
|
|
|
$ cmp -z example.txt /boot/loader.conf
|
|
|
|
example.txt /boot/loader.conf differ: size
|
|
|
|
.Ed
|
|
|
|
.Pp
|
2020-06-20 11:20:16 +00:00
|
|
|
Compare stdin with
|
|
|
|
.Pa example.txt
|
|
|
|
omitting the first 4 bytes from stdin and the first 2 bytes from
|
|
|
|
.Pa example.txt :
|
2020-06-16 15:54:59 +00:00
|
|
|
.Bd -literal -offset indent
|
|
|
|
$ echo -e "a\\nR\\nb\\nc" | cmp - example.txt 4 2
|
|
|
|
.Ed
|
1994-05-27 12:33:43 +00:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr diff 1 ,
|
|
|
|
.Xr diff3 1
|
|
|
|
.Sh STANDARDS
|
|
|
|
The
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
1994-05-27 12:33:43 +00:00
|
|
|
utility is expected to be
|
|
|
|
.St -p1003.2
|
|
|
|
compatible.
|
2013-11-18 22:53:24 +00:00
|
|
|
The
|
2021-09-23 05:46:30 +00:00
|
|
|
.Fl b ,
|
2013-11-18 22:53:24 +00:00
|
|
|
.Fl h ,
|
2021-09-23 05:43:32 +00:00
|
|
|
.Fl i ,
|
2021-09-23 05:26:52 +00:00
|
|
|
.Fl n ,
|
2013-11-18 22:53:24 +00:00
|
|
|
.Fl x ,
|
|
|
|
and
|
|
|
|
.Fl z
|
|
|
|
options are extensions to the standard.
|
2021-09-23 05:17:07 +00:00
|
|
|
.Ar skip1
|
|
|
|
and
|
|
|
|
.Ar skip2
|
|
|
|
arguments are extensions to the standard.
|
1996-08-29 18:06:19 +00:00
|
|
|
.Sh HISTORY
|
|
|
|
A
|
2000-11-20 19:21:22 +00:00
|
|
|
.Nm
|
1996-08-29 18:06:19 +00:00
|
|
|
command appeared in
|
|
|
|
.At v1 .
|
2021-09-23 05:17:07 +00:00
|
|
|
.Sh BUGS
|
|
|
|
The phrase
|
|
|
|
.Dq SI size suffixes
|
|
|
|
above refers to the traditional power of two convention, as described in
|
|
|
|
.Xr expand_number 3 .
|