Полное руководство по unzip в Linux: от базовой распаковки до исправления кодировки имён файлов

Обзор

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

Установка пакета unzip и подготовка тестового архива

Чтобы распаковывать и создавать ZIP-архивы в среде Ubuntu, установите необходимые пакеты с помощью команды sudo apt-get update -qq && sudo apt-get install -y unzip zip.

sudo apt-get update -qq && sudo apt-get install -y unzip zip

Создайте отдельную рабочую директорию для практики и перейдите в неё с помощью команды mkdir -p ~/unzip-demo && cd ~/unzip-demo.

mkdir -p ~/unzip-demo && cd ~/unzip-demo

Создайте тестовые текстовые файлы и файл конфигурации, выполнив команду echo 'Hello Linux' > file1.txt && echo 'Config Content' > config.cfg.

echo ‘Hello Linux’ > file1.txt && echo ‘Config Content’ > config.cfg

Объедините созданные файлы в тестовый архив с помощью команды zip -r sample.zip file1.txt config.cfg.

zip -r sample.zip file1.txt config.cfg

Предварительный просмотр содержимого без распаковки (unzip -l)

Перейдите в рабочую директорию с файлами практики с помощью команды cd ~/unzip-demo.

cd ~/unzip-demo

Команда unzip -l sample.zip позволяет просмотреть список файлов внутри архива, их размеры и даты изменения без фактического извлечения данных.
Это удобно для безопасной проверки структуры и оценки требуемого места на диске перед распаковкой больших архивов.

unzip -l sample.zip

Распаковка в указанную директорию и управление перезаписью файлов (unzip -d, -o)

Перейдите в рабочую директорию с архивом с помощью команды cd ~/unzip-demo.

cd ~/unzip-demo

Создайте целевую директорию для хранения распакованных файлов с помощью команды mkdir -p ./extracted.

mkdir -p ./extracted

Команда unzip sample.zip -d ./extracted извлекает содержимое архива в директорию ./extracted, указанную с помощью опции -d.
Это полезно, когда необходимо аккуратно распаковать файлы в определённое место, не засоряя текущую рабочую директорию.

unzip sample.zip -d ./extracted

Команда unzip -o sample.zip -d ./extracted принудительно перезаписывает существующие файлы без запроса подтверждения у пользователя.
Это особенно актуально в скриптах и процессах автоматического развёртывания, чтобы выполнение не останавливалось из-за интерактивных вопросов о перезаписи файлов.

unzip -o sample.zip -d ./extracted

Проверьте список и атрибуты файлов, чтобы убедиться, что распаковка в целевую директорию прошла успешно, выполнив команду ls -la ./extracted.

ls -la ./extracted

Извлечение только выбранных файлов

Перейдите в рабочую директорию с архивом с помощью команды cd ~/unzip-demo.

cd ~/unzip-demo

Создайте целевую директорию для выборочно извлекаемых файлов с помощью команды mkdir -p ./selective.

mkdir -p ./selective

Команда unzip sample.zip file1.txt -d ./selective извлекает только указанный файл file1.txt, не распаковывая архив целиком.
Это очень удобно, когда из большого архива требуется быстро достать только определённый конфигурационный файл или лог.

unzip sample.zip file1.txt -d ./selective

Проверьте список и атрибуты файлов в целевой директории с помощью команды ls -la ./selective, чтобы убедиться, что извлечён только нужный файл.

ls -la ./selective

Предотвращение искажения имён файлов из архивов Windows (unzip -O CP949)

Перейдите в рабочую директорию с архивом с помощью команды cd ~/unzip-demo.

cd ~/unzip-demo

Создайте целевую директорию для сохранения распакованных файлов с помощью команды mkdir -p ./korean-test.

mkdir -p ./korean-test

Команда unzip -O CP949 sample.zip -d ./korean-test распаковывает архив в директорию ./korean-test с явным указанием кодировки CP949 (EUC-KR), стандартной для корейской версии Windows, что предотвращает появление «кракозябр» в именах файлов.
Это позволяет корректно решить проблему искажения имён файлов, возникающую из-за различий в наборах символов между Windows и Linux.

unzip -O CP949 sample.zip -d ./korean-test

Проверьте корректность распаковки файлов в целевую директорию с помощью команды ls -la ./korean-test.

ls -la ./korean-test

Мы рассмотрели ключевые практические советы по работе с командой unzip в Linux: от базовых операций распаковки до исправления кодировки имён файлов.
Используйте рассмотренные опции, чтобы эффективно работать с архивами в терминале без проблем с кодировкой.