
Привет! Сегодня я расскажу тебе о том, как написать скрипт на языке bash для распаковки архивированных файлов. Этот скрипт сможет обрабатывать архивы в форматах .gz, .bz2, .lzma и .zip. Я сам недавно столкнулся с необходимостью распаковки большого количества архивов, и этот скрипт помог мне сэкономить массу времени и усилий.
Первым делом, убедимся, что у нас установлена программа unzip. Для этого мы можем использовать команду dpkg-query⁚
if ! dpkg-query -W -f'${Status}' unzip | grep ″ok installed″; then echo ″Для работы скрипта необходимо установить unzip″ exit fi
После проверки наличия unzip, мы переходим к написанию основной части скрипта. Для начала, добавим shebang, указывающий на то, что скрипт должен быть интерпретирован с помощью bash⁚
#!/bin/bash
Теперь, самое главное ― добавим функцию для распаковки архивов. Чтобы скрипт обрабатывал архивы в различных форматах, будем использовать оператор case⁚
function extract_archive { case $1 in *.gz) tar -xzf $1 ;; *.bz2) tar -xjf $1 ;; *.lzma) tar --lzma -xf $1 ;; *.zip) unzip $1 ;; *) echo ″Неизвестный формат архива″ ;; esac }
Теперь, когда у нас есть функция для распаковки архивов, нам осталось только вызвать эту функцию для каждого архива, который мы хотим распаковать. Для этого мы можем использовать цикл while⁚
while IFS read -r -d '' file; do echo ″Распаковка архива⁚ $file″ extract_archive ″$file″ done < <(find . -type f \( -name '*.gz' -o -name '*.bz2' -o -name '*.lzma' -o -name '*.zip' \) -print0)
В этом цикле while мы используем команду find для поиска всех файлов в текущей директории с расширениями .gz, .bz2, .lzma и .zip. Затем, для каждого найденного файла, мы вызываем функцию extract_archive.
На этом наш скрипт завершен! Теперь мы можем запустить его и он начнет распаковывать все архивы в текущей директории, обрабатывая их в форматах .gz, .bz2, .lzma и .zip. Если у нас не установлена программа unzip, скрипт выведет соответствующее сообщение и завершится.
Этот скрипт помог мне сэкономить время и эффективно распаковывать большое количество архивов разных форматов. Надеюсь, что и тебе он будет полезен!