---
name: "cmp"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/cmp"
---

# cmp(1)

compare two files

## NAME

**cmp** – compare two files

## SYNOPSIS

**cmp** \[**-l** \| **-s**\] *file1* *file2* \[*skip1* \[*skip2*\]\]

## DESCRIPTION

The **cmp** utility compares two files of any type and writes the results to the standard output. By default, **cmp** is silent if the files are the same; if they differ, the byte and line number at which the first difference occurred is reported.

Bytes and lines are numbered beginning with one.

The options are as follows:

- **-l**

  Print the byte number (decimal) and the differing byte values (octal) for each difference.

- **-s**

  Silent. Print nothing for differing files; return exit status only.

The optional arguments *skip1* and *skip2* are the byte offsets from the beginning of *file1* and *file2*, respectively, where the comparison will begin. The offset is decimal by default, but may be expressed as a hexadecimal or octal value by preceding it with a leading “0x” or “0”.

## EXIT STATUS

The **cmp** utility exits with one of the following values:

- 0

  The files are identical.

- 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 **-s** option has not been specified, **cmp** writes to standard error that EOF was reached in the shorter file (before any differences were found).

- \>1

  An error occurred.

## SEE ALSO

[diff(1)](/diff/1.md), [diff3(1)](/diff3/1.md), [sdiff(1)](/sdiff/1.md)

## STANDARDS

The **cmp** utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.

The arguments *skip1* and *skip2* are extensions to that specification.

## HISTORY

A **cmp** command appeared in Version 1 AT&T UNIX.
