Разархивировать файлы в Linux — вроде бы тривиальная задача, но с ней всё равно много нюансов, особенно если ты не хочешь остаться с поломанными файлами, потерять время на лишние вопросы терминала или, хуже того, сломать что-то из-за нехватки прав. ZIP — самый популярный формат архивов, но в Linux его «родной» поддержки, в отличие от Windows, нет. Поэтому приходится ставить утилиту unzip и разбираться с кучей параметров. В этом руководстве я расскажу, как делать это быстро, безопасно и без боли — от установки до вариантов распаковки с паролем и без.

Установка unzip

Большинство дистрибутивов не ставят unzip по умолчанию, так что сначала поставь его:

Ubuntu/Debian:

sudo apt install unzip

CentOS/Fedora:

sudo yum install unzip

Как разархивировать ZIP-файл

Чтобы распаковать всё в текущую папку, просто:

unzip latest.zip

Прав на запись в папку у тебя должно быть.

Подавить вывод

Не хочешь читать список файлов? Добавь -q:

unzip -q filename.zip

Разархивировать в другой каталог

Нужно в другую папку? Добавь -d:

unzip filename.zip -d /path/to/directory

Если там нужны права суперпользователя, запускай через sudo:

sudo unzip latest.zip -d /var/www

ZIP с паролем

Пароль лучше не писать в командной строке, но если уж очень надо:

unzip -P PasswOrd filename.zip

Без пароля unzip спросит его при необходимости.

Исключить файлы из распаковки

Чтобы не выдёргивать лишнее:

unzip filename.zip -x file1-to-exclude file2-to-exclude

Например, исключить .git каталог:

unzip filename.zip -x "*.git/*" 

Перезапись существующих файлов

При повторной распаковке unzip спросит, что делать с файлами:

replace file? [y]es, [n]o, [A]ll, [N]one, [r]ename:

Чтобы не спрашивал и просто перезаписывал:

unzip -o filename.zip

Будь осторожен, свои изменения потеряешь.

Не перезаписывать существующие файлы

Если хочешь восстановить удалённые файлы, но не потерять изменения:

unzip -n filename.zip

Несколько ZIP-архивов

Чтобы распаковать все ZIP-файлы в папке одной командой:

unzip '*.zip' 

Обязательно в одинарных кавычках, иначе shell спутается.

Посмотреть содержимое архива

Перед распаковкой глянь, что внутри:

unzip -l filename.zip