cmp Command in Linux

cmp Command Linux

The cmp command in Linux compares two files byte by byte, identifying the first point of difference or confirming if they’re identical. If the files match, it exits without output. If they differ, it reports the location of the first mismatch.

The cmp command Linux​ is ideal for efficiently comparing both text and binary files when you only need to know if there are differences without viewing them in detail.

Here is the main syntax of the Linux cmp command:

cmp [options] file1 file2
  • file1 and file2: These are the two files you want to compare.
  • [options]: Optional flags to modify the command’s behavior.
Without any options, cmp compares the two files and only reports if there is a difference, showing the first differing byte and line.

Prerequisites to Use cmp Command in Linux

Provide the options below to let the compare files Linux tutorial work correctly and move on.

  • A Linux VPS running a compatible Linux distribution (e.g., Ubuntu, Debian, CentOS).
  • A non-root user with sudo privileges.
  • Access to Terminal/Command Line.

8 Practical Examples to Understand Linux File Comparison Command

In the world of software development and system administration, comparing files is crucial for verifying changes, debugging, and ensuring data integrity. The cmp command in Linux serves as a powerful tool for this purpose, allowing users to quickly identify differences between files.

1. Comparing Two Files Using cmp in Linux

The cmp command in Linux compares two files byte by byte, stopping at the first difference and reporting the byte and line of divergence.

If the files are identical, it returns no output, making it a quick way to verify file similarity.

  • Syntax:
cmp file1 file2

file1 and file2 are the two files you want to compare.

  • Example:

Suppose you want to check if file1.txt and file2.txt files are identical. So, run:

cmp file1.txt file2.txt

If the files are identical, the command will return no output.

If there is a difference, it will display something like below:

Output

file1.txt file2.txt differ: byte 78, line 5

The above output tells you that the first difference is at byte 78 on line 5, allowing you to easily locate the mismatch.

This method is essential for any Linux user looking to compare files in Linux efficiently.

2. Printing Differing Bytes with cmp Command in Linux

To print the actual differing bytes between two files using the cmp command in Linux, you can utilize the -b option.

This option displays the byte positions and their differing values in octal format, allowing for a detailed analysis of discrepancies.

  • Syntax:
cmp -b file1 file2
  • Example:

To see the differing bytes between two files, file1.txt and file2.txt, run the command below:

cmp -b file1.txt file2.txt

Output

byte 78:  141  142
byte 80:  200  201

In the above output, the “byte” column reveals the position of each difference, while the following columns display the differing byte values from file1.txt and file2.txt.

This detailed information allows for quick identification of both the location and nature of the discrepancies between the files.

  • Also, when working with binary files, the -b option can help identify discrepancies in values:
cmp -b binary1.bin binary2.bin

3. Displaying All Differing Bytes with Positions

To display the byte position and value for all differing bytes between two files, you can use the -l option with the cmp command in Linux.

  • Syntax:

Running the below command provides a comprehensive list of each byte’s position where differences occur, along with their values in octal format, allowing for an in-depth comparison of the files:

cmp -l file1 file2
  • Example:

Use the command below to see all differing bytes along with their positions for file1.txt and file2.txt files:

cmp -l file1.txt file2.txt

Output

  78  100  141
  80  200  151

In the above output, the first column indicates the byte position of each difference, while the next two columns show the differing byte values from file1.txt and file2.txt, respectively, in octal format.

This format helps you quickly pinpoint where the files diverge and understand the differences.

4. Skipping Initial Bytes with Linux cmp command

To skip a specific number of initial bytes when comparing two files using the cmp command in Linux, you can use the -i option followed by the number of bytes to skip.

  • Syntax:

Running the below command will ignore the first N bytes of both files, allowing you to focus the comparison on the remaining content:

cmp -i N file1 file2

N is the number of initial bytes to skip from both files.

  • Example:

Use the following command to skip the first 10 bytes of file1.txt and file2.txt:

cmp -i 10 file1.txt file2.txt

This command will ignore the first 10 bytes of both files during the comparison, helping you focus on the following relevant content.

5. Limiting the Number of Bytes Compared with cmp

To restrict the number of bytes compared between two files using the cmp command in Linux, you can utilize the -n option followed by the desired byte count.

  • Syntax:

Using the command below, you can compare only the first N bytes of both files to focus on a specific portion of the content.

cmp -n N file1 file2

N is the number of bytes to compare.

  • Example:

To compare only the first 20 bytes of file1.txt and file2.txt, run:

cmp -n 20 file1.txt file2.txt

The above command will limit the comparison to the first 20 bytes, enabling you to quickly check for differences within that specific range without analyzing the entire files.

  • Also, using the -n option allows you to focus on the first few lines when debugging or verifying logs:
cmp -n 100 log1.txt log2.txt

6. Displaying Progress Meter with cmp Command

To monitor the progress of a file comparison in real time, you can use the -v option with the cmp command in Linux.

This displays a progress meter, allowing you to see how much of the file has been processed and enhancing the overall user experience during lengthy comparisons.

  • Syntax:

Running the command below compares the file1 and file2 files with the progress meter indicating the status throughout the operation.

cmp -v file1 file2
  • Example:

To compare file1.txt and file2.txt while viewing the progress, run the following command:

cmp -v file1.txt file2.txt

The above command will provide a real-time update on the comparison process, helping you gauge how far along the command is, especially useful for large files.

  • Also, you can use the -v option to get real-time feedback and monitor long-running comparisons:
cmp -v largefile1.txt largefile2.txt

7. Suppressing Output with the cmp Command

To suppress all output from the cmp command in Linux, you can use the -s option, which enables silent mode.

  • Syntax:

Running the below command will not display any output if the files are identical, providing a clean and unobtrusive way to check for differences:

cmp -s file1 file2
  • Example:

Use the following command to compare file1.txt and file2.txt without any output:

cmp -s file1.txt file2.txt

In this case, if the files are the same, there will be no output, but if they differ, the command will return a non-zero exit status, which can be checked for further processing.

  • Also, you can use the -s option in scripts to check if two files are identical and trigger actions based on the result:
if cmp -s file1.txt file2.txt; then
    echo "Files are identical."
else
    echo "Files differ."
fi

8. Displaying Help with the cmp Command

If you need guidance on using the cmp command in Linux and its available options, the -h option displays a help message.

  • Syntax:

To view a brief overview of how to use the command, including its syntax and available options, making it easier for users to understand and utilize its functionality, run:

cmp -h
  • Example:

Run the command below to see the help information for the cmp command in Linux:

cmp -h

Both beginners and experienced users can use the valuable information of output of the above command which displays the command usage, options, and flags.

That’s it! By mastering the cmp command for byte-by-byte comparison, you can enhance your Linux skills and manage files more efficiently.

Let’s see the cmp command options with output explanation at a glance to review what you learned till now.

cmp Command Linux Options

OptionDescriptionExampleOutput Explanation
-bPrint differing bytes in octal format.cmp -b file1.txt file2.txtDisplays byte positions and values of differences in octal.
-lList all differing bytes with positions.cmp -l file1.txt file2.txtLists all byte positions and their differing values in octal.
-i NSkip the first N bytes before comparing.cmp -i 10 file1.txt file2.txtIgnores the first 10 bytes, comparing the rest of the files.
-n NCompare only the first N bytes.cmp -n 20 file1.txt file2.txtCompares the first 20 bytes only.
-sSuppress all output; returns an exit status only.cmp -s file1.txt file2.txtNo output if identical; returns non-zero if different.
-vShow progress during the comparison.cmp -v file1.txt file2.txtDisplays a progress meter during comparison.
-hDisplay help information for the command.cmp -hShows usage instructions and available options.

What does the cmp command do in Linux?

The cmp command in Linux compares two files byte by byte. It identifies the first point of difference and reports whether the files are identical or not, making it ideal for quick Linux file comparison.

How to compare binary files using the cmp command?

The cmp command is effective for comparing both text and binary files in Linux. It provides a straightforward way to determine if there are any differences without opening the files.

What is the silent mode in the cmp command?

You can enable silent mode by using the -s option:

cmp -s file1 file2

In this mode, the command will not display any output if the files are identical, providing a clean way to check for differences.

Why cmp does not provide output when comparing files?

If cmp does not provide any output, it means the files are identical.

To verify, you can try using different options or check the file contents using other commands like diff or cat for more insights.

Conclusion

The cmp command in Linux is an essential tool for anyone working in Linux who needs to compare files efficiently. By mastering its various options and applications, you can enhance your file management capabilities and ensure data integrity across your systems.

Whether you’re performing a simple file check or engaging in complex data validation, leveraging the power of the cmp command Linux will streamline your workflow.

To further enhance your file comparison skills, explore the capabilities of the diff command, which provides a different approach to understanding file changes.

Leave a Reply

Your email address will not be published. Required fields are marked.