Шпаргалка: сравнить две копии файла без изменения
Отличите побайтовое равенство от удобного просмотра текстовых различий. Корректно интерпретируйте статусы cmp и diff перед передачей отчёта.
Когда открыть эту шпаргалку
Два файла с одинаковым размером могут содержать разные байты. С другой стороны, текстовый diff удобен для человека, но его вывод не является копией одного из сравниваемых файлов. Сначала выберите критерий равенства и только затем средство сравнения.
Выбор команды
Имена before.txt и after.txt обозначают два существующих файла. Эти формы команд читают данные и не применяют исправлений.
| Что выяснить | Команда или выражение | Как читать результат |
|---|---|---|
| Побайтовое совпадение | cmp -s -- before.txt after.txt | Молчаливый режим: решение передаётся кодом возврата. |
| Первое различие | cmp -- before.txt after.txt | Диагностика помогает найти расхождение, но не объясняет его причину. |
| Текстовый контекст | diff -u -- before.txt after.txt | Показывает добавленные и удалённые строки с окружением. |
| Игнорировать завершающий CR | diff --strip-trailing-cr -- before.txt after.txt | Сравнение уже допускает оговорённое различие байтов. |
| Сверить размеры | stat -c '%n %s' -- before.txt after.txt | Это предварительная оценка, не доказательство равенства. |
Короткая последовательность
Выведите текстовое различие и сразу запомните статус. Не запускайте автоматически patch или перезапись файлов после обнаружения отличий.
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 или проверьте знакомые команды в учебном терминале.