cmp Command in Linux

Introduction to Linux File Comparison with cmp

This tutorial will guide you through using the cmp command in Linux to compare the content of files, including both text and binary formats. The cmp command provides a byte-by-byte comparison, identifying and reporting the first point of divergence between two files. You'll create sample files, use cmp to analyze them, and learn about options for customizing the comparison process for your systemadmin tasks.

This lab covers the following:

  1. Understanding the fundamental usage of the cmp command.
  2. Comparing text file contents using cmp.
  3. Comparing binary file contents using cmp.

Understanding the cmp Command in Linux

This section introduces the cmp command, a crucial tool for any systemadmin working with Linux. This command compares the content of two files at the byte level, highlighting the first location where they differ.

Let's begin by creating two simple text files:

echo "This is file1.txt" > file1.txt
echo "This is file2.txt" > file2.txt

Now, use the cmp command to compare these files:

cmp file1.txt file2.txt

Example output:

file1.txt file2.txt differ: byte 10, line 1

The output indicates a difference at byte 10, which is the 10th character. The files' content diverge from this point onward.

The cmp command is also suitable for binary files. Let's create and compare two binary files:

dd if=/dev/urandom of=file1.bin bs=1024 count=1
dd if=/dev/urandom of=file2.bin bs=1024 count=1
cmp file1.bin file2.bin

Example output:

file1.bin file2.bin differ: byte 1, line 1

Here, cmp identifies the first byte where the binary files differ.

The cmp command offers various options for customizing your comparison:

  • -l: Displays the byte number (decimal) and the differing bytes (octal) for each difference found.
  • -s: Activates silent mode; no output is shown if files are identical. Useful for scripting.
  • -i: Ignores case differences when comparing text files.

Explore these options to tailor cmp to your specific systemadmin needs.

Comparing Text Files with cmp

This section focuses on using the cmp command for text file comparisons.

First, create two text files with some differing content:

echo "This is the content of file1.txt" > file1.txt
echo "This is the content of file2.txt" > file2.txt

Now, use cmp to compare the files:

cmp file1.txt file2.txt

Example output:

file1.txt file2.txt differ: byte 25, line 1

The output shows a difference starting at byte 25, the 25th character in the file.

The -l option provides more detailed output, showing the byte number and the differing byte values:

cmp -l file1.txt file2.txt

Example output:

25 164 163

This indicates that at byte 25, the files contain the octal byte values 164 and 163, respectively.

If the files are identical, cmp produces no output. This is the default silent behavior. You can enforce this with the -s option.

echo "This is the content of file3.txt" > file3.txt
cmp file1.txt file3.txt

No output indicates the files are identical, useful for root scripts.

Comparing Binary Files with cmp

This section demonstrates using the cmp command to compare binary files, which is critical for a systemadmin.

Start by creating two binary files containing random data:

dd if=/dev/urandom of=file1.bin bs=1024 count=1
dd if=/dev/urandom of=file2.bin bs=1024 count=1

The dd command generates two binary files, file1.bin and file2.bin, each with 1024 bytes of random data, pulled from /dev/urandom.

Now, compare the binary files using cmp:

cmp file1.bin file2.bin

Example output:

file1.bin file2.bin differ: byte 1, line 1

This indicates a difference at the very first byte.

Using the -l option provides details about the differing bytes:

cmp -l file1.bin file2.bin

Example output:

1 302 5

This output tells us that at byte 1, the files contain the octal byte values 302 and 5.

As with text files, no output indicates identical binary files.

dd if=/dev/urandom of=file3.bin bs=1024 count=1
cmp file1.bin file3.bin

No output means the files are identical, essential knowledge for any systemadmin.

Summary of cmp Command Usage

This tutorial provided a practical introduction to the cmp command in Linux. You've learned how to compare both text and binary files to identify differences. From understanding the basic usage of cmp and how it compares files byte-by-byte, you practiced comparing both text and binary files using the command. You've also explored customization options, such as displaying byte numbers and differing byte values. Mastering cmp is a valuable skill for systemadmin tasks involving file verification and comparison.

400+ Linux Commands