Krolyxon
Commit 137402b

Branches

Refs →

dotfiles-x11.localbinext

45 lines · 1.4 KB · Bourne Again Shell (bash)

1#!/bin/sh
2
3# A general, all-purpose extraction script. Not all extraction programs here
4# are installed by LARBS automatically.
5#
6# Default behavior: Extract archive into new directory
7# Behavior with `-c` option: Extract contents into current directory
8
9while getopts "hc" o; do case "${o}" in
10 c) extracthere="True" ;;
11 *) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit 1 ;;
12esac done
13
14if [ -z "$extracthere" ]; then
15 archive="$(readlink -f "$*")" &&
16 directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
17 mkdir -p "$directory" &&
18 cd "$directory" || exit 1
19else
20 archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)" 2>/dev/null)"
21fi
22
23[ -z "$archive" ] && printf "Give archive to extract as argument.\\n" && exit 1
24
25if [ -f "$archive" ] ; then
26 case "$archive" in
27 *.tar.bz2|*.tbz2) bsdtar -xf "$archive" ;;
28 *.tar.xz) bsdtar -xf "$archive" ;;
29 *.tar.gz|*.tgz) bsdtar -xf "$archive" ;;
30 *.tar.zst) bsdtar -xf "$archive" ;;
31 *.tar) bsdtar -xf "$archive" ;;
32 *.lzma) unlzma "$archive" ;;
33 *.bz2) bunzip2 "$archive" ;;
34 *.rar) unrar x -ad "$archive" ;;
35 *.gz) gunzip "$archive" ;;
36 *.zip) unzip "$archive" ;;
37 *.Z) uncompress "$archive" ;;
38 *.7z) 7z x "$archive" ;;
39 *.xz) unxz "$archive" ;;
40 *.exe) cabextract "$archive" ;;
41 *) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
42 esac
43else
44 printf "File \"%s\" not found.\\n" "$archive"
45fi