среда, 1 июля 2009 г.

Работаем с лёгкостью с архивами в консоли. Утилита atool.

Думаю, многим линуксоидам приходилось и приходится ковыряться с архивами в консоли. Несомненно, многие современные дистрибутивы сразу приучают пользователей к графическому интерфейсу и графическим менеджерам архивов, однако для кого-то работа в консоли имеет больший приоритет. Несомненно, у многих уже от пальцев отскакивают команды типа

$ tar xzvf archive.tar.gz
$ tar czvf new_archive.tar.gz directory_to_pack
$ tar xjvf archive.tar.bz2
$ tar cjvf new_archive.tar.bz2 directory_to_pack
Как видно, ключи в случае gzip и bzip2 используются разные, а ещё в природе есть (если не вспоминать про более редкие arj, arc, p7zip, ace) zip и rar, которые распаковываются с помощью unzip и unrar.

В случае архивов rar и zip есть весьма большая проблема, состоящая в том, что в этих архивах, как правило, файлы лежат не в какой-нибудь директории, а просто так, "в корне". Это чревато тем, что распаковывая какой-нибудь из таких архивов (если вы не озаботились создать под содержимое архива новую поддиректорию), имеется неплохой шанс загадить текущую директорию множеством файлов из него, хотя вы ожидали, что будет создана новая поддиректория, где и будет всё собрано.

В принципе, не такая уж и проблема, всё запомнить, но было бы, разумеется, куда более здорово, если бы существовала универсальная программа архиватор/разархиватор для всех нужных форматов. И такая программа есть! Это atool, набор скриптов, позволяющий свести к минимуму нагрузку на мозг :)

Для распаковки архива достаточно скомандовать:

$ aunpack archive.tar.gz
Вместо gz может быть bzip, bzip2, zip, 7zip, rar, arj и прочее (смотрите мануал). Замечательно, что все архивы при таком использовании будут распакованы в отдельную поддиректорию, даже если все файлы в архиве лежат в корне, а не в отдельном каталоге (в этом случае будет создана поддиректория с названием, соответствующим названию архива)! Таким образом, текущую директорию вы, независимо от того, что за архив вы поковыряли, не загадите, а что более важно, не перезапишете случайно старые файлы.

Чтобы распаковать содержимое архива в какую-то заданную директорию служит ключ -X или —extract-to:

$ atool archive.rar -X path_to_extract
В данном случае путь path_to_extract уже должен существовать.

Запаковать файлы file1, file2 и директорию dir в zip-архив можно не менее простой командой:

$ apack new_archive.zip file1 file2 dir
Использование wildcards * , ? и прочих регулярных выражений очень облегчает работу.

Для того чтобы запаковать директории dir1, dir2, dir3 в архивы dir?.tar.bz2 достаточно выполнить:

$ apack -e -F tar.bz2 dir*

-e выполняет команду для каждого архива, указанного в регулярном выражении dir*, а -F tar.bz2 указывает на формат архива. Формат можно указывать как в виде расширения, так и в виде tar+bz2.

Для просмотра содержимого архива служит als:

$ als archive.tar.bz2
а посмотреть содержимое файла readme в архиве можно так:
$ acat dwm-4.7.tar.bz2 dwm-4.7/readme | less

Резюме

Если вы предпочитаете работать в консоли, то программа atool окажется очень полезной для работы с архивами, она избавит от необходимости запоминать ключи для разных программ-упаковщиков и позволит освободить мозговые ресурсы для более полезных занятий. А использование регулярных выражений даёт возможность выполнять большой обьём работы, по меркам графических программ, с помощью коротких команд.

Сам я познакомился с atool благодаря этой заметке.

Копируете статью - поставьте ссылку на оригинал!

Комментариев нет:

Отправить комментарий