Назва

compress, uncompress, zcat - стискає та розтискає дані

Стислий огляд

compress [ -f ] [ -v ] [ -c ] [ -V ] [ -b бітів ] [ файл ... ]
uncompress [ -f ] [ -v ] [ -c ] [ -V ] [ файл ... ]
zcat [ -V ] [ файл ... ]

Опис

Програма compress за допомогою адаптованого алгоритму кодування Lempel-Ziv зменшує розмір вказаних їй файлів. Коли це можливо, до кожної назви файлу додається закінчення .Z, зберігаючи при цьому ту саму належність, і час доступу та зміни (модифікації) файлу. Якщо не вказано жодного файлу, то стандартний ввід буде стиснено та перенаправлено на стандартний вивід. Стиснені файли можна відновити до початкового стану за допомогою команд uncompress або zcat.

Ключ -f означає примусове стиснення. Це зручно у випадку ущільнення цілого каталогу, навіть коли деякі файли, насправді, неможливо зменшити в розмірі. Без ключа -f команда compress виконуватиметься у фоновому режимі, і запитуватиме користувача кожного разу як необхідно перезаписати існуючий файл.

Ключ -c змушує compress/uncompress здійснювати запис на стандартний пристрій виводу; жодного файлу не буде змінено. Недеструктивне поводження zcat тотожне саме команді uncompress -c.

Програма compress використовує модифікований алгоритм Lempel-Ziv, викладений в "A Technique for High Performance Data Compression", Тері А. Велча, IEEE Computer, том. 17, номер 6 (Червень 1984), сторінка 8-19. Поширені підланцюжки у файлі, спершу, замінюються 9-бітними кодами, починаючи з числа 257 і вище. Коли досягнуто 512-и, алгоритм перемикається до 10-бітних кодів, і продовжує використовувати більше бітів доти, доки не досягне ліміту, встановленого опцією -b (стандартним значенням є 16). Діапазон вказаних бітів може знаходитись між 9 і 16. Стандартне значення можна поміняти у вихідному коді (з подальшою рекомпіляцією), щоб дозволити compress працювати на менших машинах.

Після досягнення бітового ліміту, compress періодично перевіряє коефіцієнт стиснення. Якщо він зростає, compress продовжує використання існуючої алгоритмічної бібліотеки. Однак, якщо степінь стиснення рухається в напрямку зниження, compress відкине таблицю підланцюжків і перебудує її наново. Це дозволяє алгоритму адаптуватися до наступного "блоку" у файлі.

Зауважте, що прапорець -b не вживається з uncompress, оскільки параметр біти, вказаний під час стиснення, закодовано у вивід, поряд із магічним числом (дивіться ?magic(5)), щоб упевнитися, що не буде спроб розтиску випадкових даних, або ущільнення вже стиснених.

Ступінь досягнутого стиснення залежить від розміру вводу, кількості закодованих бітів, і частоти повторення підланцюжків. Типово, такi дані, як вихідний текст програм, набраний англійською мовою, зменшено в розмірах до 50-60%. Показники, як правило, набагато кращі за аналогічні, з використанням алгоритму Huffman (застосованому в ?pack(1)), або адаптивному алгоритмові Huffman, і забирає менше часу на обчислення.

Завдяки опції -v можна отримати інформацію про відсоток зменшення розміру кожного стисненого файлу.

Ключ -V спричинить до виводу (на стандартний пристрій помилки) версії програми та опцій компіляції.

Статус виходу програми, за звичайних обставин, дорівнюватиме 0; якщо останній файл виявиться більшим за розміром після (спроби) стиснення, статус буде рівний 2; при якійсь іншій помилці, статус повернення дорівнюватиме 1.

Дивіться також

?pack(1), ?compact(1)

Діагностика

Usage : compress [-dfvcV] [-b maxbits] [file ...]: На командному рядку вказано якісь неправильні опції.

Missing maxbits : За ключем -b повинна слідувати кількість бітів.

file : not in compressed format: Файл, який було вказано для розтиску не є стисненим.

file : compressed with xx bits, can only handle yy bits: Файл було стиснено програмою з можливістю обробки більшої кількості бітів ніж в змозі обробити compress на цій машині. В такому разі краще перестиснути файл, вказавши менше бітів.

file : already has .Z suffix -- no change: Файл вже має суфікс .Z, і залишатиметься без змін.

file : filename too long to tack on .Z: Файл неможливо стиснути, оскільки його назва перевищує 12 символів. Краще перейменувати файл і спробувати знову. Ви не зустрінете цього повідомлення на системах BSD.

file already exists; do you wish to overwrite (y or n)? : (Стиснений) файл вже існує. Дайте відповідь "y", якщо ви бажаєте перезаписати вивідний файл, і "n" - якщо ні.

uncompress : corrupt input: Виявлено порушення SIGSEGV, що, як правило, означає, що файл вводу зіпсовано.

ompression : xx.xx%: Відсоток вводу, збережений стисненням. (Повідомлення, що з'являється тільки у випадку присутності ключа -v).

-- not a regular file : unchanged: Коли ввідний файл не є звичайним файлом (тобто, це каталог), його залишено без змін.

-- has xx other links : unchanged: Існують посилання на ввідний файл; залишено без змін. Дивіться ln(1) для додаткової інформації.

-- file unchanged : Жодної зменшення в розмірі не досягнуто за рахунок стиснення. Ввід залишиться без змін.

Вади

Стиснені файли повинні бути сумісними для різних машин з достатньою пам'яттю, але в разі перенесення файлів на архітектури з малим простором даних процесу (64 кілобайти або менше, як у випадку DEC PDP, Intel 80286 тощо) слід скористатися прапорцем -b12.