69 lines
1.1 KiB
Bash
Executable File
69 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ $# -lt 1 ]; then
|
|
echo "Usage: $(basename $0) FILES"
|
|
exit 1
|
|
fi
|
|
|
|
extract() {
|
|
arg="$1"
|
|
cd "$(dirname "$arg")" || exit
|
|
case "$arg" in
|
|
*.tar.bz2)
|
|
tar xjf "$arg" --one-top-level
|
|
local code=$?
|
|
;;
|
|
*.tar.gz)
|
|
tar xzf "$arg" --one-top-level
|
|
local code=$?
|
|
;;
|
|
*.bz2)
|
|
bunzip2 "$arg"
|
|
local code=$?
|
|
;;
|
|
*.gz)
|
|
gunzip "$arg"
|
|
local code=$?
|
|
;;
|
|
*.tar)
|
|
tar xf "$arg" --one-top-level
|
|
local code=$?
|
|
;;
|
|
*.tbz2)
|
|
(tar xjf "$arg" --one-top-level)
|
|
local code=$?
|
|
;;
|
|
*.tgz)
|
|
tar xzf "$arg" --one-top-level
|
|
local code=$?
|
|
;;
|
|
*.zip)
|
|
a_dir=$(expr "$arg" : '\(.*\).zip')
|
|
7z x "$arg" -o"$a_dir"
|
|
local code=$?
|
|
;;
|
|
*.7z)
|
|
a_dir=$(expr "$arg" : '\(.*\).7z')
|
|
7z x "$arg" -o"$a_dir"
|
|
local code=$?
|
|
;;
|
|
*.Z)
|
|
uncompress "$arg"
|
|
local code=$?
|
|
;;
|
|
*.rar)
|
|
a_dir=$(expr "$arg" : '\(.*\).rar')
|
|
mkdir "$a_dir"
|
|
7z x "$arg" -o"$a_dir"
|
|
local code=$?
|
|
;;
|
|
*)
|
|
echo "'$arg' cannot be extracted via extract()" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
cd - || exit $?
|
|
exit $code
|
|
}
|
|
|
|
extract "$1" |