Команды Linux · 4 min read · Sep 17, 2025
Учебник по команде cmp в Linux для начинающих (7 примеров)

Команда cmp используется в операционной системе Linux для побайтового сравнения двух файлов. Она предоставляет краткий вывод различий между двумя файлами, позволяя пользователю легко выявлять несоответствия между ними. Команда cmp отображает, сколько несовпадающих байтов произошло на каких смещениях, и предоставляет сводный подсчет несоответствий. С помощью этого полезного инструмента пользователи могут быстро проверить, идентичны ли два файла или нет.
В этом учебнике мы обсудим ‘cmp’ через простые примеры. Но прежде чем мы это сделаем, стоит упомянуть, что все примеры и инструкции, упомянутые в этом учебнике, были протестированы на Ubuntu 22.04.
Команда cmp
Команда ‘cmp’ позволяет вам выполнять побайтовое сравнение двух файлов. Утилита предоставляет несколько функций в виде параметров командной строки. В этом учебнике мы обсудим некоторые ключевые параметры, которые дадут вам (начинающему) хорошее представление о том, как работает этот инструмент.
1. Как сравнить два файла с помощью cmp
В своей самой простой форме вы можете использовать ‘cmp’ следующим образом:
cmp [имя_файла1] [имя_файла2]Как уже упоминалось, инструмент сравнивает два файла побайтово. Когда обнаруживается различие, инструмент останавливается и выдает вывод, который сообщает, в какой строке и байте находится различие.
Например:
cmp file1.txt file2.txt
Как видно на приведенном выше скриншоте, вывод четко указывает, что файлы различаются на байте 20 в строке 1.
2. Как заставить cmp выводить различающиеся байты
Если хотите, вы также можете заставить ‘cmp’ отображать различающиеся байты в своем выводе. Это можно сделать с помощью параметра командной строки -b.
cmp -b [файл1] [файл2]Например:
cmp -b file1.txt file2.txt
В этом случае, как видно на скриншоте выше, различие находится в 17-м байте, который является ‘l’ в file1.txt и ‘i’ в file2.txt. Значения 154 и 151 — это значения этих байтов соответственно.
3. Как заставить cmp пропустить некоторые начальные байты из обоих файлов
Если хотите, вы также можете заставить ‘cmp’ пропустить определенное количество начальных байтов из обоих файлов, а затем сравнить их. Это можно сделать, указав количество байтов в качестве аргумента для параметра командной строки -i.
cmp -i [байты_для_пропуска] [файл1] [файл2]Например:
cmp -i 10 file1.txt file2.txtОбратите внимание, что в таких случаях (когда вы используете -i для пропуска байтов) байт, с которого начинается сравнение, рассматривается как байт номер ноль.
Двигаясь дальше, инструмент также позволяет вам пропустить разное количество байтов из обоих файлов. Это можно сделать следующим образом:
cmp -i [байты_для_пропуска_из_первого_файла] : [байты_для_пропуска_из_второго_файла] [файл1] [файл2]Например:
cmp -i 4:7 file1.txt file2.txt
4. Как заставить cmp отображать позицию байта (и значение) для всех различающихся байтов
Вы также можете заставить команду ‘cmp’ выводить позицию байта и значение байта для всех различающихся байтов. Эта функция доступна с помощью параметра командной строки -l.
cmp -l [файл1] [файл2]Например:
cmp -l file1.txt file2.txt
Первый столбец в выводе (пример показан выше) представляет позицию (номер байта) различающихся байтов. Второй столбец представляет значение байта различающегося байта в первом файле, в то время как третий столбец представляет значение байта различающегося байта во втором файле.
5. Как ограничить количество байтов для сравнения
Инструмент также позволяет вам ограничить количество байтов, которые вы хотите сравнить — например, вы можете захотеть сравнить не более 25 или 50 байтов. Это можно сделать с помощью параметра командной строки -n.
cmp -n [количество_байтов_для_сравнения] [файл1] [файл2]Например:
cmp -n 25 file1.txt file2.txt6. Как отображать индикатор прогресса при использовании команды cmp
При сравнении больших файлов (или даже разделов) с помощью ‘cmp’ вы можете захотеть увидеть прогресс текущего сравнения. Это можно сделать с помощью команды ‘pv’ вместе с командой ‘cmp’. Вот шаблон команды, который вы можете использовать:
$ pv [файл1] | cmp -l [файл2] > [выходной_файл]Например:
$ pv file1.txt | cmp -l file3.txt > output.txtОбратите внимание, что файл ‘output.txt’ будет содержать весь вывод, который производит команда ‘cmp’. Индикатор прогресса (который вы можете увидеть на приведенном выше скриншоте) создается командой ‘pv’.
Команда ‘pv’ обычно не предустановлена в Linux (по крайней мере, не в Ubuntu). Но вы можете легко установить ее с помощью следующей команды:
sudo apt-get install pv7. Как заставить ‘cmp’ подавлять вывод
Инструмент также позволяет вам подавлять вывод, который он обычно производит. Это можно сделать с помощью параметра командной строки -s.
$ cmp -s [файл1] [файл2]Например:
$ cmp -s file1.txt file2.txtЭтот параметр может быть полезен при использовании утилиты ‘cmp’ в скриптах. Например, в зависимости от того, идентичны ли файлы (что можно определить, получив код выхода команды), вы можете захотеть отобразить пользовательское сообщение вместо вывода, который инструмент обычно производит.
Заключение
Мы обсудили большинство параметров команды ‘cmp’ в этой статье, поэтому вам нужно практиковаться, чтобы начать использовать инструмент в своей повседневной работе. В случае любых сомнений или вопросов обратитесь к странице руководства ‘cmp’.
Get new posts in your inbox
No spam. Unsubscribe anytime.