Команда compress предназначена для сжатия данных без потерь с помощью соответствующей утилиты, использующей алгоритм Лемпела-Зива. Целью использования данной утилиты является экономия дискового пространства. Используемый утилитой алгоритм долгое время подпадал под действие патента, поэтому она не снискала особой популярности. Тем не менее, в данный момент она может беспрепятственно использоваться, ведь срок действия патента истек. В то же время, она не позволяет достичь такой степени сжатия данных, как утилиты bzip2 и xz, посему может использоваться лишь как аналог популярных утилит gzip и zip.
Базовый синтаксис команды выглядит следующим образом:
$ compress [параметры] <имена файлов>
Чаще всего compress используется вообще без каких-либо параметров, причем в качестве аргументов может передаваться неограниченное количество имен файлов, которые следует сжать. По умолчанию оригинальные версии файлов заменяются на их сжатые версии (с расширением .Z) с соответствующими метаданными (то есть, меткой времени модификации, правами доступа, именами владельца и группы владельцев и так далее). Если вас не устраивает такое положение дел, вы можете воспользоваться параметром -с для сохранения оригинальных версий файлов (в этом случае утилита будет выводить сжатые данные посредством стандартного потока вывода, поэтому вам придется воспользоваться перенаправлением потока данных таким образом, как показано ниже). Параметр -f позволяет принудительно перезаписать существующий файл архива. Параметр -v позволяет выводить информацию о степени сжатия файла. Наконец, параметр -r позволяет осуществить рекурсивное сжатие файлов.
Если же вам нужно создать архив с несколькими файлами внутри, одной утилиты compress будет явно мало. Для этой цели также понадобится утилита tar, с помощью которой можно создать архив с файлами, после чего сжать этот архив с помощью утилиты compress. Например, вы можете использовать следующую последовательность команд для создания архива с именем archive.tar.Z:
$ tar -cf archive.tar <имена файлов>
$ compress archive.tar
Параметры -c и -f утилиты tar предназначены для указания на необходимость добавления всех файлов в один архив (-c) и чтения имени файла архива из следующего аргумента (-f).
Альтернативным вариантом является замена последней команды на параметр -Z утилиты tar, позволяющий автоматически сжать полученный архив с помощью compress:
$ tar -cfZ archive.tar.Z <имена файлов>
В первую очередь вам придется установить рассматриваемую утилиту; проще всего это сделать с помощью терминала путем исполнения соответствующей вашему дистрибутиву команды. Подробнее об установке программного обеспечения рассказано в данном разделе.
Команда для Linux Mint и Ubuntu:
$ sudo apt-get install ncompress
Команда для Fedora Workstation:
$ sudo dnf install ncompress
$ compress text.txt
В результате оригинальный файл text.txt будет заменен на свою сжатую версию text.txt.Z.
$ compress text1.txt text2.txt text3.txt
В этом случае также все оригинальные версии файлов (text1.txt, text2.txt, text3.txt) будут заменены на сжатые версии (text1.txt.Z, text2.txt.Z, text3.txt.Z). Добавление нескольких файлов в единый файл архива будет рассмотрено ниже.
$ compress -c text.txt > text.txt.Z
Теперь оригинальный файл text.txt будет оставлен в директории вместе со сжатой версией text.txt.Z.
$ compress -d text.txt.Z
В результате сжатая версия файла text.txt.Z будет заменена на его оригинальную версию text.txt.
$ tar -cfZ etc.tar.Z /etc/
В результате будет создан архив etc.tar.Z с файлами из директории /etc/.
$ compress -rv nolf228
В результате в заданной директории все подвергающиеся сжатию файлы будут заменены на их сжатые версии.