Поиск по сайту:

Функция Bash для извлечения файловых архивов различных типов

Существует очень много приложений для извлечения различных типов архивных файлов. Запомнить все опции и параметры каждого инструмента архивирования вам будет сложно. Не беспокойся! Сегодня я наткнулся на простую функцию Bash для извлечения файловых архивов различных типов в Linux.

Эта функция Bash может извлекать наиболее часто используемые форматы архивов, такие как .tar.bz2, .tar.bz, .bz2, .rar, .zip и .7z и т. д. Вам не нужно использовать настоящее приложение для архивирования для извлечения архивного файла! Просто добавьте эту функцию в файл ~/.bashrc и вызовите ее для извлечения файлов архива. Он автоматически найдет и использует соответствующий инструмент архивирования для извлечения файлов. Не нужно запоминать флаги и опции!

Функция Bash для извлечения файловых архивов

Откройте файл ~/.bashrc в текстовом редакторе по вашему выбору:

nano ~/.bashrc

Добавьте в конце следующий фрагмент:

Bash Function To Extract File Archives Of Various Types
extract () {
     if [ -f $1 ] ; then
         case $1 in
             *.tar.bz2)   tar xjf $1     ;;
             *.tar.gz)    tar xzf $1     ;;
             *.bz2)       bunzip2 $1     ;;
             *.rar)       rar x $1       ;;
             *.gz)        gunzip $1      ;;
             *.tar)       tar xf $1      ;;
             *.tbz2)      tar xjf $1     ;;
             *.tgz)       tar xzf $1     ;;
             *.zip)       unzip $1       ;;
             *.Z)         uncompress $1  ;;
             *.7z)        7z x $1    ;;
             *)           echo "'$1' cannot be extracted via extract()" ;;
         esac
     else
         echo "'$1' is not a valid file"
     fi
}

Функция Bash для извлечения файловых архивов различных типов

Нажмите Ctrl+o и нажмите ENTER, чтобы сохранить файл, а затем нажмите Ctrl+x, чтобы выйти из файла. Выполните следующую команду, чтобы изменения вступили в силу:

source ~/.bashrc

С этого момента вы можете просто вызывать эту функцию для извлечения различных типов архивных файлов.

Например, я собираюсь извлечь архивный файл типа .7z с помощью команды:

extract archive.7z 

Пример вывода:

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_IN,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz (206A7),ASM)

Scanning the drive for archives:
1 file, 16013693 bytes (16 MiB)

Extracting archive: archive.7z
--
Path = archive.7z
Type = 7z
Physical Size = 16013693
Headers Size = 1204
Method = LZMA:23
Solid = +
Blocks = 1

Everything is Ok                                                               

Folders: 21
Files: 37
Size:       16625007
Compressed: 16013693

Аналогично, чтобы извлечь файлы типа .zip, команда будет такой:

extract archive.zip 

Обратите внимание, что перед использованием этой функции у вас должен быть установлен соответствующий менеджер архивов. Если в вашей системе не установлены поддерживаемые инструменты архивирования, вы получите сообщение об ошибке, как показано ниже:

extract archive.zip 
bash: /usr/bin/unzip: No such file or directory

Первоначальный автор этого сценария неизвестен. Этот сценарий упоминается во многих местах в Интернете. Если кто-нибудь знает, кто это написал, пожалуйста, дайте мне знать в разделе комментариев ниже. Добавлю данные автора.

Используете ли вы какие-нибудь другие интересные функции Bash? Пожалуйста, поделитесь ими через раздел комментариев. Это может быть полезно и мне, и всем читателям.

Связанное чтение:

  • Переименование файлов без двойного ввода полного имени в Linux
  • Советы по Bash: как выполнить cp или mv и cd одной командой
  • [Советы по Bash] Как выполнить cd и ls одной командой
  • Как архивировать файлы и каталоги в Linux [Часть 1]

Статьи по данной тематике