Compare Files With the 'cmp' Utility in Linux

Check for differences and changes between files

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.

How to Execute cmp

Try comparing a couple of files with something similar to:

cmp file1.txt file2.txt

Linux cmp command

You should see a read out of any differences on the next line. Don't expect anything too detailed. Cmp compares bytes, but that's enough to let you know if something is different. Bytes and lines are numbered beginning with one.

Linux cmp command verbose

If you're familiar with bytes, and you want a more detailed breakdown, you can use the '-l' switch to get the verbose output:

cmp -l file1.txt file2.txt

For a complete breakdown, take a look at the manual below.


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


The following switches extend the command's functionality:


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


Print nothing for differing files; return exit status only.

'Skip' Arguments

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.

Return Values

The cmp utility exits with one of the following values:

0—The files are identical.

1—The files are different; this value 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 output that EOF was reached in the shorter file (before any differences were found).

>1—An error occurred.

Usage Notes

The diff(1) command performs a similar function.

The cmp utility is expected to be St -p1003.2 compatible.

Because distributions and kernel-release levels differ, use the man command (% man) to see how any specific command is used on your particular computer.

Was this page helpful?