summaryrefslogtreecommitdiff
path: root/etc/functions/extract
diff options
context:
space:
mode:
authorDaniel Friesel <derf@derf.homelinux.org>2009-10-21 11:57:53 +0200
committerDaniel Friesel <derf@derf.homelinux.org>2009-10-21 11:58:39 +0200
commit834f0ce07b8224c9cee6985f0256d0a3fd6e5ae9 (patch)
treed65841f17b964d9b2198f175b5739054de5c2f09 /etc/functions/extract
parent9216ee2c5b45c2c2e6a422c2d3edea3e67a6fde9 (diff)
functions: extr → extract
Diffstat (limited to 'etc/functions/extract')
-rw-r--r--etc/functions/extract32
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
+}