aboutsummaryrefslogtreecommitdiff
path: root/templates/.bin/extract
blob: e6831e41ee6a15ff916d82d450dd2c644399db1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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