Шпаргалки / Объяснение

Шпаргалка: сравнить две копии файла без изменения

Отличите побайтовое равенство от удобного просмотра текстовых различий. Корректно интерпретируйте статусы cmp и diff перед передачей отчёта.

Начальный6 минОбщие принципы LinuxGNU Coreutils · documented stable optionsBash · pipeline semantics

Когда открыть эту шпаргалку

Два файла с одинаковым размером могут содержать разные байты. С другой стороны, текстовый diff удобен для человека, но его вывод не является копией одного из сравниваемых файлов. Сначала выберите критерий равенства и только затем средство сравнения.

Выбор команды

Имена before.txt и after.txt обозначают два существующих файла. Эти формы команд читают данные и не применяют исправлений.

Что выяснитьКоманда или выражениеКак читать результат
Побайтовое совпадениеcmp -s -- before.txt after.txtМолчаливый режим: решение передаётся кодом возврата.
Первое различиеcmp -- before.txt after.txtДиагностика помогает найти расхождение, но не объясняет его причину.
Текстовый контекстdiff -u -- before.txt after.txtПоказывает добавленные и удалённые строки с окружением.
Игнорировать завершающий CRdiff --strip-trailing-cr -- before.txt after.txtСравнение уже допускает оговорённое различие байтов.
Сверить размерыstat -c '%n %s' -- before.txt after.txtЭто предварительная оценка, не доказательство равенства.

Короткая последовательность

Выведите текстовое различие и сразу запомните статус. Не запускайте автоматически patch или перезапись файлов после обнаружения отличий.

Локальная Linux-система
diff -u -- before.txt after.txt
status=$?
printf 'diff status=%s\n' "$status"

Проверка вывода

Для diff статус 0 означает отсутствие различий, 1 — найденные различия, 2 — проблему выполнения. У cmp 0 также обозначает равенство, 1 — отличие, а 2 — ошибку. Поэтому различие файлов не следует смешивать с отсутствием прав на их чтение.

Границы применения

Игнорирование пробелов, регистра или CR меняет критерий сравнения и может скрыть важную разницу. Для двоичных форматов текстовый diff не заменяет побайтовую проверку. Если источник одновременно изменяет другая программа, сравнение может не описывать единую согласованную версию.

Технические источники

Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.

  • Руководство cmp(1)
  • Руководство diff(1)
  • Руководство stat(1)

Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.

Примеры для собственной Linux-системы с Bash и указанными утилитами. Наличие пакетов и набор опций проверьте в установленной версии; браузерный терминал поддерживает только своё подмножество.

От материала к практике

Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.

Поиск по Linux

Поиск локальный. ↑ ↓ — перейти к результату, Enter — открыть.

Навигация