-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathx
executable file
·49 lines (46 loc) · 1.62 KB
/
x
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
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env bash
# filetype=`file -ib "$1" | cut -d ";" -f "1"`
extract_dir="${1%.*}"
case "$1" in
*.tar.gz|*.tgz)
command -v pigz &>/dev/null && pigz -dc "$1" | tar xv || tar zxvf "$1" ;;
*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
*.tar.xz|*.txz)
tar --xz --help &> /dev/null \
&& tar --xz -xvf "$1" \
|| xzcat "$1" | tar xvf - ;;
*.tar.zma|*.tlz)
tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \
|| lzcat "$1" | tar xvf - ;;
*.tar.zst|*.tzst)
tar --zstd --help &> /dev/null \
&& tar --zstd -xvf "$1" \
|| zstdcat "$1" | tar xvf - ;;
*.tar) tar xvf "$1" ;;
*.tar.lz) command -v lzip &>/dev/null && tar xvf "$1" ;;
*.gz) command -v pigz &>/dev/null && pigz -dk "$1" || gunzip -k "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.xz) unxz "$1" ;;
*.lzma) unlzma "$1" ;;
*.z) uncompress "$1" ;;
*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk|*.aar|*.whl)
unzip "$1" -d "$extract_dir" || 7z x "$1" ;;
*.rar) unrar x -ad "$1" || 7z x "$1" ;;
*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
*.7z) 7za x "$1" ;;
*.deb)
mkdir -p "$extract_dir/control"
mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "../${1}" > /dev/null
cd control; tar xzvf ../control.tar.gz
cd ../data; extract ../data.tar.*
cd ..; rm *.tar.* debian-binary
cd ..
;;
*.zst) unzstd "$1" ;;
*)
echo "extract: '$1' cannot be extracted" >&2
success=1
;;
esac