#!/bin/bash # Source: https://github.com/xvoland/Extract # function Extract for common file formats # # This is a Bash function called "extract" that is designed to extract a variety of file formats. # It takes one or more arguments, each of which represents a file or path that needs to be extracted. # If no arguments are provided, the function displays usage instructions. # # This bash script allows to download a file from Github storage https://github.com/xvoland/Extract/blob/master/extract.sh # # Usage: # extract . # # Example: # $ extract file_name.zip # # Author: Vitalii Tereshchuk, 2013 # Web: https://dotoca.net # Github: https://github.com/xvoland/Extract/blob/master/extract.sh SAVEIFS=$IFS IFS="$(printf '\n\t')" function extract { if [ $# -eq 0 ]; then # display usage if no parameters given echo "Usage: extract ." echo " extract [path/file_name_2.ext] [path/file_name_3.ext]" fi for n in "$@"; do if [ ! -f "$n" ]; then echo "'$n' - file doesn't exist" return 1 fi case "${n%,}" in *.cbt|*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar) tar zxvf "$n" ;; *.lzma) unlzma ./"$n" ;; *.bz2) bunzip2 ./"$n" ;; *.cbr|*.rar) unrar x -ad ./"$n" ;; *.gz) gunzip ./"$n" ;; *.cbz|*.epub|*.zip) unzip ./"$n" ;; *.z) uncompress ./"$n" ;; *.7z|*.apk|*.arj|*.cab|*.cb7|*.chm|*.deb|*.iso|*.lzh|*.msi|*.pkg|*.rpm|*.udf|*.wim|*.xar|*.vhd) 7z x ./"$n" ;; *.xz) unxz ./"$n" ;; *.exe) cabextract ./"$n" ;; *.cpio) cpio -id < ./"$n" ;; *.cba|*.ace) unace x ./"$n" ;; *.zpaq) zpaq x ./"$n" ;; *.arc) arc e ./"$n" ;; *.cso) ciso 0 ./"$n" ./"$n.iso" && \ extract "$n.iso" && \rm -f "$n" ;; *.zlib) zlib-flate -uncompress < ./"$n" > ./"$n.tmp" && \ mv ./"$n.tmp" ./"${n%.*zlib}" && rm -f "$n" ;; *.dmg) hdiutil mount ./"$n" -mountpoint "./$n.mounted" ;; *) echo "extract: '$n' - unknown archive method" return 1 ;; esac done } IFS=$SAVEIFS