Автор (ы) исходного текста | Спенсер Томас |
---|---|
Первоначальный выпуск | февраль 1985 г.; 35 лет назад (1985-02) |
Операционная система | Unix, Unix-like, IBM i |
Тип | Команда |
Расширение имени файла | .Z |
---|---|
Тип интернет-носителя | application / x-compress |
Разработано | Спенсером Томасом |
Тип формата | сжатие данных |
сжатие - это программа сжатия оболочки Unix , основанная на алгоритме сжатия LZW. По сравнению с более современными утилитами сжатия, такими как gzip и bzip2, сжатие выполняется быстрее и с меньшим использованием памяти за счет значительно более низкой степени сжатия .
uncompress восстанавливает файлы в исходное состояние после того, как они были сжаты с помощью утилиты сжатия. Если файлы не указаны, стандартный ввод будет распакован в стандартный вывод.
В следующей версии POSIX и Single Unix Specification планируется, что алгоритм DEFLATE будет использоваться в gzip формат должен поддерживаться этими утилитами.
Файлы, сжатые с помощью сжатия, обычно имеют расширение ".Z" (смоделировано по образцу более ранней программы pack, в которой использовалось расширение ". Z"). Большинство программ tar будут передавать свои данные через сжатие, если задана опция командной строки «-Z
». (Сама по себе программа tar не сжимает; она просто хранит несколько файлов в одном ленточном архиве.)
Файлы можно вернуть в исходное состояние с помощью функции uncompress. Обычное действие при распаковке - это не просто создание несжатой копии файла, но также восстановление метки времени и других атрибутов сжатого файла.
Для файлов, созданных с помощью сжатия в других системах, uncompress поддерживает сжатие от 9 до 16 бит.
Алгоритм LZW, используемый в compress, был запатентован Исследовательским центром Сперри в 1983 году. Терри Велч опубликовал статью IEEE о алгоритма в 1984 году, но не упомянул, что он подал заявку на патент на алгоритм. Спенсер Томас из Университета Юты взял эту статью и реализовал compress в 1984 году, не осознавая, что на алгоритм LZW подана заявка на патент. Формат изображения GIF также включал сжатие LZW таким образом, и Unisys позже потребовала лицензионных отчислений за реализацию GIF. Джозеф М. Орост возглавлял группу и работал с Томасом и др. создать «финальную» (4.0) версию compress и опубликовать ее как бесплатное программное обеспечение для группы net.sources USENET в 1985 году. США Патент 4558302 был выдан в 1985 году, и именно поэтому compress нельзя было использовать без выплаты лицензионных отчислений компании Sperry Research, которая в конечном итоге была объединена с Unisys.
compress не пользуется популярностью у определенных групп пользователей, потому что он использует алгоритм LZW, на который распространяется патент Unisys - из-за этого gzip и bzip2 возросла популярность в операционных системах на базе Linux благодаря их альтернативным алгоритмам, а также лучшему сжатию файлов. Однако compress продолжает присутствовать в системах Unix и BSD, а команды compress и uncompress также были перенесены на IBM i операционная система.
Срок действия патента LZW в США истек в 2003 году, так что теперь он находится в общественном достоянии в Соединенных Штатах. Все патенты на LZW по всему миру также истекли (см. Формат обмена графическими данными # Unisys и исполнение патентов LZW ).
В следующей версии POSIX и Single Unix Specification планируется, что алгоритм DEFLATE будет использоваться в gzip формат, поддерживаемый этими утилитами.
Выходной двоичный файл состоит из групп бит. Каждая группа битов состоит из кодов с фиксированным количеством битов (9-16). Каждая группа (кроме последней) должна быть выровнена по количеству бит, умноженному на 8, и дополнена нулями справа. Последняя группа должна быть выровнена по 8 и дополнена нулями. Вы можете найти дополнительную информацию в ncompress issue.
. Например, вы хотите вывести 10 9-битных кодов, а затем вывести 5 10-битных кодов. У вас есть 2 группы битов: 100 бит и 50 бит. Первая группа должна быть выровнена по 72 и дополнена нулями справа. Вторая группа должна быть выровнена по 8 и дополнена нулями справа. Вам нужно вывести 100 бит, затем 44 нулевых бита, затем 50 бит, затем 6 нулевых бит.
На самом деле это ошибка. LZW не требует выравнивания. Эта ошибка является частью оригинального UNIX compress, ncompress, gzip и даже порт Windows. Он существует более 35 лет. Все файлы application / x-compress были созданы с использованием этой ошибки. Поэтому мы должны включить его в выходную спецификацию.
Некоторые реализации сжатия записывают случайные биты из неинициализированного буфера как биты выравнивания. Нет гарантии, что биты выравнивания будут нулями. Таким образом, с точки зрения 100% совместимости декомпрессор должен просто игнорировать значения битов выравнивания.
compress
: сжатие данных - Справочник по командам и служебным программам, Единая спецификация UNIX, выпуск 7 из The Open Group