]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.bin/cmp/cmp.1
MFV: xz 5.4.5
[FreeBSD/FreeBSD.git] / usr.bin / cmp / cmp.1
1 .\" Copyright (c) 1987, 1990, 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" This code is derived from software contributed to Berkeley by
5 .\" the Institute of Electrical and Electronics Engineers, Inc.
6 .\"
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\"    notice, this list of conditions and the following disclaimer in the
14 .\"    documentation and/or other materials provided with the distribution.
15 .\" 3. Neither the name of the University nor the names of its contributors
16 .\"    may be used to endorse or promote products derived from this software
17 .\"    without specific prior written permission.
18 .\"
19 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 .\" SUCH DAMAGE.
30 .\"
31 .\"     @(#)cmp.1       8.1 (Berkeley) 6/6/93
32 .\"
33 .Dd September 23, 2021
34 .Dt CMP 1
35 .Os
36 .Sh NAME
37 .Nm cmp
38 .Nd compare two files
39 .Sh SYNOPSIS
40 .Nm
41 .Op Fl l | s | x
42 .Op Fl bhz
43 .Op Fl -ignore-initial Ns Cm = Ns Ar num1 Ns Op :num2
44 .Op Fl -bytes Ns Cm = Ns Ar num
45 .Ar file1 file2
46 .Op Ar skip1 Op Ar skip2
47 .Sh DESCRIPTION
48 The
49 .Nm
50 utility compares two files of any type and writes the results
51 to the standard output.
52 By default,
53 .Nm
54 is silent if the files are the same; if they differ, the byte
55 and line number at which the first difference occurred is reported.
56 .Pp
57 Bytes and lines are numbered beginning with one.
58 .Pp
59 The following options are available:
60 .Bl -tag -width indent
61 .It Fl b , Fl -print-bytes
62 Print each byte when a difference is found.
63 .It Fl h
64 Do not follow symbolic links.
65 .It Fl i Ar num1 Ns Oo :num2 Oc , Fl -ignore-initial= Ns Ar num1 Ns Op :num2
66 Skip
67 .Ar num1
68 bytes from
69 .Ar file1 ,
70 and optionally skip
71 .Ar num2
72 bytes from
73 .Ar file2 .
74 If
75 .Ar num2
76 is not specified, then
77 .Ar num1
78 is applied for both
79 .Ar file1
80 and
81 .Ar file2 .
82 .It Fl l , Fl -verbose
83 Print the byte number (decimal) and the differing
84 byte values (octal) for each difference.
85 .It Fl n Ar num , Fl -bytes= Ns num
86 Only compare up to
87 .Ar num
88 bytes.
89 .It Fl s , Fl -silent , Fl -quiet
90 Print nothing for differing files; return exit
91 status only.
92 .It Fl x
93 Like
94 .Fl l
95 but prints in hexadecimal and using zero as index
96 for the first byte in the files.
97 .It Fl z
98 For regular files compare file sizes first, and fail the comparison if they
99 are not equal.
100 .El
101 .Pp
102 The optional arguments
103 .Ar skip1
104 and
105 .Ar skip2
106 are the byte offsets from the beginning of
107 .Ar file1
108 and
109 .Ar file2 ,
110 respectively, where the comparison will begin.
111 The offset is decimal by default, but may be expressed as a hexadecimal
112 or octal value by preceding it with a leading ``0x'' or ``0''.
113 .Pp
114 .Ar skip1
115 and
116 .Ar skip2
117 may also be specified with SI size suffixes.
118 .Sh EXIT STATUS
119 The
120 .Nm
121 utility exits with one of the following values:
122 .Bl -tag -width 4n
123 .It 0
124 The files are identical.
125 .It 1
126 The files are different; this includes the case
127 where one file is identical to the first part of
128 the other.
129 In the latter case, if the
130 .Fl s
131 option has not been specified,
132 .Nm
133 writes to standard error that EOF was reached in the shorter
134 file (before any differences were found).
135 .It >1
136 An error occurred.
137 .El
138 .Sh EXAMPLES
139 Assuming a file named
140 .Pa example.txt
141 with the following contents:
142 .Bd -literal -offset indent
143 a
144 b
145 c
146 .Ed
147 .Pp
148 Compare stdin with
149 .Pa example.txt :
150 .Bd -literal -offset indent
151 $ echo -e "a\\nb\\nc" | cmp - example.txt
152 .Ed
153 .Pp
154 Same as above but introducing a change in the third byte of stdin.
155 Show the byte number (decimal) and differing byte (octal):
156 .Bd -literal -offset indent
157 $ echo -e "a\\nR\\nc" | cmp -l - example.txt
158      3 122 142
159 .Ed
160 .Pp
161 Compare file sizes of
162 .Pa example.txt
163 and
164 .Pa /boot/loader.conf
165 and return 1 if they are not equal.
166 Note that
167 .Fl z
168 can only be used with regular files:
169 .Bd -literal -offset indent
170 $ cmp -z example.txt /boot/loader.conf
171 example.txt /boot/loader.conf differ: size
172 .Ed
173 .Pp
174 Compare stdin with
175 .Pa example.txt
176 omitting the first 4 bytes from stdin and the first 2 bytes from
177 .Pa example.txt :
178 .Bd -literal -offset indent
179 $ echo -e "a\\nR\\nb\\nc" | cmp - example.txt 4 2
180 .Ed
181 .Sh SEE ALSO
182 .Xr diff 1 ,
183 .Xr diff3 1
184 .Sh STANDARDS
185 The
186 .Nm
187 utility is expected to be
188 .St -p1003.2
189 compatible.
190 The
191 .Fl b ,
192 .Fl h ,
193 .Fl i ,
194 .Fl n ,
195 .Fl x ,
196 and
197 .Fl z
198 options are extensions to the standard.
199 .Ar skip1
200 and
201 .Ar skip2
202 arguments are extensions to the standard.
203 .Sh HISTORY
204 A
205 .Nm
206 command appeared in
207 .At v1 .
208 .Sh BUGS
209 The phrase
210 .Dq SI size suffixes
211 above refers to the traditional power of two convention, as described in
212 .Xr expand_number 3 .