zcat(1) основы команды в терминале
Содержание:
НАЗВАНИЕ
gzip, gunzip, zcat - сжать или распаковать файлы
СИНТАКСИС
gzip [ -acdfhlLnNrtvV19 ] [ -S суффикс ] [ файл ... ]
gunzip [ -acfhlLnNrtvV ] [ -S суффикс ] [ файл ... ]
zcat [ -fhLV ] [ файл ... ]
ОПИСАНИЕ
Gzip уменьшает размер перечисленных файлов, используя кодирование Лемпеля-Зива (LZ77). Там, где это возможно, каждый файл заменяется архивом с расширением .gz, с таким же владельцем, временем доступа и модификации. (Расширение по умолчанию - gz для VMS, z для MSDOS, OS/2 FAT, Windows NT FAT и Atari). Если не указано ни одного файла, или как имя файла указан "-", то стандартный поток ввода сжимается в стандартный поток вывода. Gzip будет пытаться сжать только обычные файлы. В частности, он проигнорирует символические ссылки.
Если имя сжатого файла слишком длинное для файловой системы, где он находится, gzip урезает его. Gzip пытается укоротить только те части имени файла, которые длиннее 3 символов (на части файл разбивается точкой). Если имя файла состоит только из коротких частей, укорачиваются только самые длинные части. Например, если имя файла ограничено 14-ю символами, gzip.msdos.exe сжимается в gzi.msd.exe.gz. Имена не укорачиваются на файловых системах не имеющих ограничения по длине имени файла.
По умолчанию gzip сохраняет в сжатом файле его оригинальное имя и временную метку. Это нужно для разархивирования файла с опцией -N. Она используется, если имя сжатого файла было усечено или временная метка при перемещении файла не сохранилось.
Сжатые файлы могут быть восстановлены в первоначальное состояние командой gzip -d или gunzip или zcat. Если первоначальное имя файла, сохранённое в архиве, не допускается файловой системой, в которой он находится, то ему создаётся новое имя из первоначального по правилам этой системы.
gunzip берёт список файлов из командной строки и заменяет каждый файл с расширением .gz, -gz, .z, -z, _z или .Z и начинающийся правильным заголовком разархивированным файлом без этого расширения. gunzip также распознаёт специальные расширения .tgz и .taz как сокращения от .tar.gz и .tar.Z соответственно. Сжимая файл, gzip по необходимости использует расширение .tgz вместо усечения имени у файла с расширением .tar.
gunzip на данный момент может распаковывать архивы, созданные gzip, zip, compress, compress -H или pack. Распознавание формата архива автоматическое. Используя первые два формата, gunzip проверяет 32-битный CRC. Для формата pack gunzip проверяет длину разархивированного файла. Стандартный формат compress не был рассчитан на возможность проверки целостности архива. Тем не менее, gunzip в некоторых ситуациях может распознать повреждённый .Z-файл. Если вы получаете сообщение об ошибке в процессе распаковки .Z-файла, не думайте, что он не повреждён, если стандартный uncompress на него не жалуется. Это обычно происходит из-за того, что uncompress не проверяет целостность архива и достаёт из него только кучу мусора. На системе SCO формат compress -H (алгоритм lzh) не использует CRC, но также допускает некоторые проверки на целостность.
Файлы, сжатые zip-ом, могут быть распакованы gzip-ом только если они содержат один файл, сжатый методом 'deflation'. Эта функция предназначена только для целей конвертирования tar.zip-файлов в формат tar.gz. Для распаковки zip-архивов, содержащих несколько файлов, вместо gunzip используйте unzip.
zcat идентичен gunzip -c. (На некоторых системах zcat может быть установлен как gzcat, в целях обеспечения сохранности оригинальной ссылки на compress.) zcat распаковывает либо файлы по списку из командной строки, либо со стандартного потока ввода с записью разархивированных данных в стандартный поток вывода. zcat распаковывает файлы с правильным заголовком вне зависимости от того, содержат они суффикс .gz или нет.
Gzip использует алгоритм Лемпеля-Зива, применяемый в zip и PKZIP. Получаемая величина сжатия зависит от размеров входных данных и количества повторяющихся байтовых последовательностей. Текстовые данные, такие как исходные коды или просто тексты на английском языке, в среднем сжимаются на 60-70%. Сжатие обычно получается гораздо лучше, чем при использовании алгоритма LZW (используется в compress), кодировании Хаффмана (используется в pack) или адаптивном кодировании Хаффмана (compact).
Сжатие осуществляется всегда, даже если запакованный файл получается немного больше оригинала. В наихудшем случае размер файла увеличивается на несколько байт заголовка gzip, плюс по 5 байт на каждый блок размером 32 Кб, что составляет 0.015% на больших файлах. Обратите внимание, что фактическое число занятых файлом блоков на диске практически никогда не увеличивается. gzip при сжатии/распаковке сохраняет права доступа и временные метки файлов.
ОПЦИИ
-a --ascii Режим текста Ascii: символы конца строки конвертируются в стандарт данной системы. Эта опция поддерживается только на некоторых не-Unix системах. В MSDOS последовательность CR LF конвертируется в LF при сжатии, и LF конвертируется в CR LF при распаковке.
-c --stdout --to-stdout Выводить полученный архив в стандартный поток вывода, оставляя оригинальные файлы нетронутыми. Если входных файлов несколько, то вывод состоит из последовательности независимо сжатых файлов. Для получения большего сжатия, объедините вместе все входные файлы перед архивированием.
-d --decompress --uncompress Распаковка.
-f --force Проводить сжатие или распаковку, даже если на файл есть ссылки, такой архив уже существует или сжатые данные читаются или пишутся на терминал. Если входные данные не в формате, поддерживаемом gzip и задан ключ --stdout, то они без изменения копируются в стандартный поток вывода: позвольте zcat действовать как cat. Если не указан ключ -f и работа не ведётся в фоновом режиме, то gzip просит подтвердить, нужно ли переписывать уже существующий файл.
-h --help Вывод на экран справки и выход.
-l --list Для каждого сжатого файла печатать следующие данные:
- compressed size: размер сжатого файла
- uncompressed size: размер оригинального файл
- ratio: коэффициент сжатия (0.0%, если неизвестен)
- uncompressed_name: имя оригинального файла
Размер несжатого файла выводится как -1 для файлов не в формате gzip, таких как .Z-файлы. Чтобы получить размер несжатого файла в таких случаях, можно использовать команду:
zcat файл.Z | wc -c
В комбинации с ключом --verbose отображаются также следующие данные:
- method: метод сжатия
- crc: 32-битный CRC несжатых данных
- date & time: время создания/изменения несжатого файла
Методы сжатия, поддерживаемые на данный момент: deflate, compress, lzh (compress -H в SCO) и pack. CRC отображается как ffffffff для файлов не в формате gzip.
С ключом --name имя оригинального файла, дата и время берутся из самого архива, если присутствуют.
С ключом --verbose также выводятся общий размер и коэффициент сжатия всех файлов, при условии что все размеры известны. С ключом --quiet не показывается заголовок и итоговая часть.
-L --license Показать лицензию gzip и выйти.
-n --no-name При сжатии не сохранять по умолчанию имя исходного файла и временные метки (оригинальное имя всегда сохраняется, если имя архива придётся усечь). При распаковке не восстанавливать имя исходного файла, даже если оно сохранено (только убрать суффикс gzip из имени архива), и не восстанавливать оригинальные временные метки (взять их со сжатого файла). Эта опция при распаковке применяется по умолчанию.
-N --name При сжатии всегда сохранять имя и временные метки исходного файла (используется по умолчанию). При распаковке восстанавливать имя и временные метки исходного файла, если они присутствуют. Эта опция полезна в системах, имеющих ограничение на длину имени файла, или при потере временных меток файла в процессе его перемещения.
-q --quiet Не выводить предупреждения.
-r --recursive Рекурсивно разбирать дерево каталогов. Если в списке из командой строки указан какой-нибудь каталог, gzip зайдёт в него и сожмёт все файлы, в нём находящиеся (или распакует их в случае с gunzip).
-S .суф --suffix .суф Использовать суффикс .суф вместо .gz. Может быть задано любое окончание, но суффиксов, отличных от .z и .gz лучше избегать, чтобы не спутать их с другими при переносе файлов на другие системы. Отсутствие суффикса заставляет gunzip пытаться распаковать все указанные файлы вне зависимости от их окончаний, например: gunzip -S "" * (*.* для MSDOS)
Предыдущие версии gzip использовали суффикс .z, но в дальнейшем это было изменено, чтобы избежать конфликта с pack.(1).
-t --test Тест, проверка целостности сжатого файла.
-v --verbose Подробно. Показывать имя и уменьшения размера в процентах для каждого файла при сжатии или распаковке.
-V --version Версия. Показать номер версии и параметры сборки, затем выйти.
-# --fast --best Управление скоростью сжатия посредством цифры #, где -1 или --fast обозначает самый быстрый метод сжатия (хуже сжимается), и -9 или --best обозначает самый медленный (лучшая степень сжатия). Уровень сжатия по умолчанию равен -6 (хорошее сжатие при средней скорости).
РАСШИРЕННОЕ ИСПОЛЬЗОВАНИЕ
Несколько сжатых файлов можно объединить в один. В этом случае gunzip распакует все файлы одновременно. Например:
gzip -c файл1 > архив.gz
gzip -c файл2 >> архив.gz
и далее
gunzip -c архив
эквивалентно
cat файл1 файл2
В случае повреждения одного из файлов в .gz-архиве, другие могут быть восстановлены (если удалить из архива повреждённый файл). Более высокое сжатие можно получить при архивировании всех файлов одновременно:
cat файл1 файл2 | gzip > архив.gz
сжимает лучше, чем
gzip -c файл1 файл2 > архив.gz
Если вы хотите перепаковать объединённые файлы для достижения большего сжатия, выполните:
gzip -cd старый_архив.gz | gzip > новый_архив.gz
Если в архиве несколько файлов, то размер несжатых данных и CRC, показываемые по ключу --list, относятся только к последнему файлу. Если вам нужен несжатый размер всех файлов, можно использовать:
gzip -cd архив.gz | wc -c
Если вы хотите создать единый архив с множеством файлов так, чтобы их потом можно было извлечь независимо друг от друга, используйте другие архиваторы, такие как tar или zip. GNU tar поддерживает ключ -z, по которому вызывается непосредственно gzip. gzip создан как дополнение к tar-у, а не как замена.
ОКРУЖЕНИЕ
Переменная окружения GZIP может содержать набор ключей по умолчанию для gzip. Эти ключи обрабатываются первыми и могут быть переопределены явным их указанием в командной строке. Например:
- для sh: GZIP="-8v --name"; export GZIP
- для csh: setenv GZIP "-8v --name"
- для MSDOS: set GZIP=-8v --name
На системах Vax/VMS во избежание конфликта с командой вызова программы такая переменная окружения называется GZIP_OPT.
ДИАГНОСТИКА
Код возврата в нормальной ситуации равен 0. Если возникла ошибка, код возврата 1. Если вышло предупреждение, код возврата 2.
Использование: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
Invalid options were specified on the command line. В командной строке были указаны неправильные ключи.
file: not in gzip format Файл, указанный gunzip, не сжат.
file: Corrupt input. Use zcat to recover some data. Сжатый файл повреждён. Воспользуйтесь zcat для восстановления части данных. Данные до точки повреждения могут быть восстановлены командой:
zcat файл > recover
file: compressed with xx bits, can only handle yy bits Файл был сжат (используя LZW) программой, которая может использовать больше бит, чем программа распаковки на этом компьютере. Перепакуйте файл gzip, который лучше сжимает и использует меньше памяти.
file: already has .gz suffix -- no change Файл считается уже сжатым. Переименуйте его и попробуйте снова.
file already exists; do you wish to overwrite (y or n)? Ответьте "y", если хотите переписать уже существующий архив, в противном случае "n".
gunzip: corrupt input Было зафиксировано нарушение SIGSEGV, что обычно означает, что входной файл повреждён.
xx.x% Сжатием достигнуто уменьшение размера на данную величину. (Относится к ключам -v и -l.)
-- not a regular file or directory: ignored Если указанный файл не является обычным файлом или каталогом (например символическая ссылка, сокет, очередь, файл устройства и т.д.), он не обрабатывается.
-- has xx other links: unchanged На указанный файл есть ссылки - он пропускается. Читайте ln(1) для получения дополнительной информации. Для принудительного сжатия таких файлов используйте ключ -f.
ПРЕДОСТЕРЕЖЕНИЯ
При записи сжатых данных на ленту обычно нужно дополнять архив нулями до конца блока. Когда архив считан с ленты и передан gunzip на распаковку, gunzip обнаруживает, что после сжатых данных идёт мусор, и по умолчанию выдаёт предупреждение. Для отключения предупреждений используйте ключ --quiet. Этот ключ может быть задан в переменной окружения GZIP, например:
- для sh: GZIP="-q" tar -xfz --block-compress /dev/rst0
- для csh: (setenv GZIP -q; tar -xfz --block-compr /dev/rst0
В приведённом примере gzip неявно вызывается ключом -z в GNU tar. Имейте в виду, что для записи и чтения архива с ленты необходимо использовать один и тот же размер блока (опция -b в tar). (Этот пример подразумевает, что вы используете версию tar от GNU.)
ОШИБКИ
Формат gzip представляет входной размер модуля 2^32, таким образом опция --list сообщает неправильные размеры не сжатых файлов и коэффициенты сжатия для не архивированных файлов размером 4 и более гигабайт. Чтобы обойти эту проблему, вы можете воспользоваться следующей командой, чтобы определить истинный размер большого распаковываемого файла:
zcat file.gz | wc -c
Ключ --list выдаёт размер как -1 и CRC как ffffffff, если архив находится на устройстве с последовательным доступом.
В некоторых редких случаях ключ --best даёт худшее сжатие, чем метод по умолчанию (-6). Некоторые файлы, содержащие чрезвычайно избыточную информацию, compress сжимает лучше, чем gzip.
ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ
Copyright ╘ 1998, 1999, 2001 Free Software Foundation, Inc. Сopyright ╘ 1992, 1993 Jean-loup Gailly
Настоящим предоставляется право изготавливать и распространять дословные копии этого руководства, включая объявление об авторском праве, с условием сохранения данного разрешения на всех копиях.
Настоящим предоставляется право копировать и распространять модифицированные копии этого руководства на условиях лицензионного соглашения для дословного копирования, при условии, что полный окончательный результат будет распространяться на условиях, идентичных условиям распространения данного документа.
Настоящим предоставляется право копировать и распространять переводы данного руководства на другом языке, на вышеупомянутых условиях для изменённых версий, если это уведомление об авторском праве не может быть объявлено в переводе, одобренном Фондом.