Функция 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]