freeze
Сжатие
и распаковка файлов (UNIX)
Синтаксис:
freeze
[-cdfvVz]
[[+n1,...,n8] [имя_файла]]...
Поддерживаемые платформы:
Neutrino
Опции:
-c
Записать
результаты операции сжатия/распаковки в стандартный поток
вывода. Файлы не изменяются.
-d
Распаковать
файлы из архива (melt).
-f
Инициировать
создание файла .F. С помощью этой опции
создается файл .F, даже если он уже
существует, без запроса подтверждения пользователя. Файл .F создается
даже в том случае, если сжатый файл больше исходного.
-V
Показать
номер версии и возможности компиляции.
-v
Показать
счетчик. Вывести для каждого сжимаемого файла счетчик
килобайтов. После сжатия файла выводится сообщение о
процентном соотношении с размером исходного файла,
сохраненного в результате сжатия.
-z
Если
результат распаковки (опция -d) требуется
вывести на терминал ввода-вывода, то выделить больший выходной
буфер, чтобы вывод на экране отображался в полноэкранном
режиме.
+n1,...,n8
Список
из 8 чисел, разделенных запятыми и определяющих значения для
статической таблицы Хаффмана.
Описание:
Утилита freeze сжимает указанные
файлы или стандартный поток ввода. В случае уменьшения размера
файл заменяется файлом с расширением .F (для
инициирования создания файла .F даже в том
случае, если сжатый файл имеет больший размер, используется
опция -f).
Если
файлы не определены, сжатие выполняется для стандартного
потока ввода, и его результаты записываются в стандартный
поток вывода.
Если
опция -f
не выбрана и утилита freeze запущена в
приоритетном режиме, выводится запрос о подтверждении
необходимости перезаписи файла.
Примечание. При
создании файла .F исходный файл
удаляется.
Как
правило, для утилиты freeze настроено
несколько ссылок. Поведение утилиты freeze зависит от того, с
помощью какого имени команды она вызвана:
Ссылка
|
Эквивалент
|
melt
|
freeze -d
|
fcat
|
freeze -cd
|
Восстановить
сжатые файлы до исходных можно следующим образом:
или
Если
указаны имена файлов, то утилита freeze
определяет принадлежность, режим, время доступа и время
изменения исходного файла и соответствующего файла .F. Таким
образом, утилиту freeze можно
использовать в целях архивирования, а после распаковки ее
также можно выполнять совместно с утилитой make.
Утилитой freeze используется
алгоритм Лемпеля-Зива при первом выполнении и динамический
алгоритм Хаффмана при втором выполнении. Размер "скользящего
окна" составляет 8 КБ, а максимальная длина "совпадающей
строки" – 256 символов. Позиции в окне кодируются с
использованием статической таблицы Хаффмана.
В начало имени файла добавляется двухбайтовое
"магическое" число, исключающее возможность распаковки
произвольного текста и повторного сжатия уже сжатого текста.
Кроме того, признаки статической таблицы Хаффмана,
используемые при сжатии, записываются в файл и могут быть
скорректированы в зависимости от конкретных условий.
Степень
сжатия зависит от размера входного файла и распределения
подстрок символов и их вероятностей. Как правило, текстовые
файлы (например, программы на языке С) сжимаются на 60-75%,
тогда как исполняемые файлы – на 50%. Сжатие с помощью данной
утилиты, как правило, намного более эффективно, чем сжатие
путем кодирования по методу Лемпеля-Зива-Велча или методу
Хаффмана, хотя расчеты в этом случае более продолжительные.
Аргумент
после опции + определяет
значения, используемые в таблице Хаффмана. Для изменения
алгоритма сжатия может потребоваться явно определить эти
значения.
Примечание. Утилита
сжатия freeze
в перспективе будет исключена, рекомендуется использовать
набор утилит GNU zip: gzip/gunzip/zcat.
Набор утилит freeze будет
поставляться в течение продолжительного времени, но в
дальнейшем будет полностью устранен.
Примеры:
Сжатие
всех файлов в текущем каталоге:
freeze *
Извлечение
всех исходных и заголовочных файлов C:
melt *.[ch].F
или:
freeze
-d *.[ch].F
Просмотр
составного содержимого всех сжатых файлов в текущем каталоге:
fcat
*.F | more
Статус завершения:
0
Нормальное
завершение.
1
Возникла
ошибка.
2
Размер
последнего файла после сжатия увеличился.
Автор:
Леонид
А. Брукхис (Leonid A. Broukhis)