diff options
author | Daniel Friesel <derf@derf.homelinux.org> | 2009-10-21 11:57:53 +0200 |
---|---|---|
committer | Daniel Friesel <derf@derf.homelinux.org> | 2009-10-21 11:58:39 +0200 |
commit | 834f0ce07b8224c9cee6985f0256d0a3fd6e5ae9 (patch) | |
tree | d65841f17b964d9b2198f175b5739054de5c2f09 /etc/functions/extract | |
parent | 9216ee2c5b45c2c2e6a422c2d3edea3e67a6fde9 (diff) |
functions: extr → extract
Diffstat (limited to 'etc/functions/extract')
-rw-r--r-- | etc/functions/extract | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/etc/functions/extract b/etc/functions/extract new file mode 100644 index 0000000..ac98916 --- /dev/null +++ b/etc/functions/extract @@ -0,0 +1,32 @@ +## vim:ft=zsh +## Extract archives +## Usage: extr <file> + +function confirm_shar { + echo -ne "\e[1;33mshar archives are shell scripts and can easily contain malicious code.\e[0m Proceed? [y/N] " + read -q +} + +if [[ -f $1 ]] { + case $1 in + *.(tar.bz2|bz2)) tar xvjf $1 ;; + *.(tar.gz|tgz)) tar xvzf $1 ;; + *.tar.lzma) unlzma $1 | tar xv ;; + *.ace) unace e $1 ;; + *.rar) unrar x $1 ;; + *.deb) ar -x $1 ;; + *.bz2) bzip2 -d $1 ;; + *.lzh) lha x $1 ;; + *.gz) gunzip -d $1 ;; + *.tar) tar xvf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1 ;; + *.shar) confirm_shar && sh $1 ;; + *.cpio) cpio --no-absolute-filenames -idv < $1 ;; + *.lzma) unlzma $1 ;; + *) echo "Unknown archive type: $1"; return 2 ;; + esac +} else { + echo "No such file: $1" + return 1 +} |