aboutsummaryrefslogtreecommitdiff
path: root/templates/.bin/extract
diff options
context:
space:
mode:
Diffstat (limited to 'templates/.bin/extract')
-rwxr-xr-xtemplates/.bin/extract38
1 files changed, 38 insertions, 0 deletions
diff --git a/templates/.bin/extract b/templates/.bin/extract
new file mode 100755
index 0000000..e6831e4
--- /dev/null
+++ b/templates/.bin/extract
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# credit: http://nparikh.org/notes/zshrc.txt
+# Usage: extract <file>
+# Description: extracts archived files / mounts disk images
+# Note: .dmg/hdiutil is Mac OS X-specific.
+
+do_autodetect () {
+ if file "$1" | grep -q 'Zip archive' ; then
+ unzip "$1"
+ else
+ echo "'$1' is not a recognized format"
+ fi
+}
+
+# first use a simple extension-based approach
+if [ -f "$1" ]; then
+ case $1 in
+ *.tar.bz2) tar -jxvf "$1" ;;
+ *.tar.gz) tar -zxvf "$1" ;;
+ *.bz2) bunzip2 "$1" ;;
+ *.dmg) hdiutil mount "$1" ;;
+ *.gz) gunzip "$1" ;;
+ *.tar) tar -xvf "$1" ;;
+ *.tbz2) tar -jxvf "$1" ;;
+ *.tgz) tar -zxvf "$1" ;;
+ *.zip) unzip "$1" ;;
+ *.ZIP) unzip "$1" ;;
+ *.pax) pax -r < "$1" ;;
+ *.pax.Z) uncompress "$1" --stdout | pax -r ;;
+ *.Z) uncompress "$1" ;;
+
+ # if there is no recognized extension, try to auto-detect the file type
+ *) do_autodetect "$1" ;;
+ esac
+else
+ echo "'$1' is not a valid file"
+fi