Введение

Утилита сравнения компьютерных файлов

В вычислительной технике, `cmp` — это командная утилита в Unix и Unix-подобных операционных системах, которая сравнивает два файла любого типа и выводит результаты в стандартный поток вывода. По умолчанию, `cmp` не выводит никакой информации, если файлы идентичны; если они различаются, сообщается номер байта и строки, в которых обнаружено первое расхождение. Команда также доступна в командной оболочке OS 9.

История

является частью X/Open Portability Guide начиная с выпуска 2 1987 года. Она была включена в первую версию POSIX.1 и Единую спецификацию Unix. Впервые она появилась в Unix версии 1. Версия команды cmp, входящая в состав GNU coreutils, была написана Торбьорном Гранлундом и Дэвидом Маккензи. Для Microsoft Windows команда доступна как отдельный пакет в составе коллекции UnxUtils, представляющей собой нативные порты Win32 для распространенных утилит, подобных GNU Unix. Команда также была портирована на операционную систему IBM i.

Выключатели

cmp может быть настроен с помощью переключателей командной строки. Переключатели, поддерживаемые известными реализациями cmp:

Наименование Описание Unix Plan 9 Inferno FreeBSD Linux IBM i b, печать байтов Печатать различающиеся байты. Отображать управляющие байты как '^', за которым следует буква алфавита, и предварять байты с установленным старшим битом как 'M ' (что означает "мета"). ✔ h Не следовать символическим ссылкам. ✔ i SKIP, ignore initial=SKIP Пропускать первые SKIP байтов ввода. ✔ i SKIP1:SKIP2, ignore initial=SKIP1:SKIP2 Пропускать первые SKIP1 байтов FILE1 и первые SKIP2 байтов FILE2. ✔ l, verbose Выводить (десятичные) номера байтов и (восьмеричные) значения всех различающихся байтов вместо стандартного вывода. Также выводить сообщение EOF, если один файл короче другого. ✔ ✔ ✔ ✔ ✔ ✔ L Печатать номер строки первого различающегося байта. ✔ ✔ ✔ n LIMIT, bytes=LIMIT Сравнивать не более LIMIT байтов. ✔ s, quiet, silent Ничего не выводить; возвращать только код завершения. ✔ ✔ ✔ ✔ ✔ ✔ t Текстовый режим, в котором файлы открываются в текстовом режиме и преобразуются в CCSID задания перед сравнением байт за байтом. ✔ v, version Выводить информацию о версии. ✔ x Как l, но печатать в шестнадцатеричном формате и использовать ноль в качестве индекса для первого байта в файлах. ✔ z Для обычных файлов сначала сравнивать размеры файлов и прекращать сравнение, если они не равны. ✔ help Выводить справочное сообщение. ✔

Операнды, представляющие собой количество байтов, обычно десятичные, но могут быть предварены '0' для восьмеричного и '0x' для шестнадцатеричного формата. За количеством байтов может следовать суффикс для указания кратного этому количеству; в этом случае пропущенное целое число понимается как 1. Буква 'iB' указывает множитель, использующий степени 1024. Буква 'B' указывает степени 1000. Например, 'n 4M' и 'n 4MiB' эквивалентны 'n 4194304', в то время как 'n 4MB' эквивалентен 'n 4000000'. Эта нотация совместима с префиксами SI для десятичных кратных и с префиксами IEC 60027 2 для двоичных кратных.