ex() {
local help="Usage: ex [--help] FILE...
-Extract each FILE according to its extension.
-7z bz2 deb gz iso rar rpm tar xz zip & variations.
-See source for exact file extensions."
+Extract many types of files
+
+Based on their extensions,
+7z bz2 deb gz iso dsc rar rpm tar xz zip sfs & some combinations.
+See source for exact file extensions.
+Note: apt-get install dtrx will do the same for
+most of these types, plus some more, I'm going
+to try it out sometime."
+
if [[ $1 == --help ]]; then
echo "$help"
fi
local x super
for x in "$@"; do
- case "$x" in
- *.tar.bz2 | *.tbz2 ) tar xvjf "$x" ;;
- *.tar.gz | *.tgz ) tar xvzf "$x" ;;
- *.bz2 ) bunzip2 "$x" ;;
- *.gz ) gunzip "$x" ;;
- *.tar ) tar xvf "$x" ;;
- *.zip ) unzip "$x" ;;
- *.Z ) uncompress "$x" ;;
- *.7z ) 7za x "$x" ;;
- *.deb ) ar xv "$x" ;;
- *.rpm ) rpm2cpio "$x" | cpio --extract --make-directories --verbose ;;
- *.tar.xz ) tar Jxvf "$x" ;;
+ case "$x" in
+ *.tar.bz2 | *.tbz2 ) tar xjf "$x" ;;
+ *.tar.gz | *.tgz ) tar xzf "$x" ;;
+ *.bz2 ) bunzip2 "$x" ;;
+ *.gz ) gunzip "$x" ;;
+ *.tar ) tar xf "$x" ;;
+ *.zip ) unzip "$x" ;;
+ *.Z ) uncompress "$x" ;;
+ *.7z ) 7za x "$x" ;;
+ *.deb ) ar x "$x" ;;
+ *.rpm ) rpm2cpio "$x" | cpio --extract --make-directories ;;
+ *.tar.xz ) tar Jxf "$x" ;;
+ *.xz) xz -d "$x" ;;
*.iso )
+ local super
if [[ $EUID != 0 ]]; then
- if [[ $(sudo -v) == Sorry* ]]; then
- echo error: need superuser priveledge for iso file
- return 1
- fi
super=sudo
fi
local temp_dir=$(mktemp -d)
- losetup -f
+ $super losetup -f
$super mount -o loop "$x" "$temp_dir"
local dir="${x%%.iso}"
mkdir "$dir"
- cp -av "$temp_dir"/* "$dir"
+ cp -a "$temp_dir"/* "$dir"
$super umount "$temp_dir"
;;
*.r[0-9][0-9]|*.rar ) unrar x "$x" ;;
- *) echo "I don't kno how to extract $x";;
- esac
+ *.dsc) dpkg-source -x "$x" ;;
+ *.sfs) $super unsquashfs "$x" ;;
+ *) echo "I don't know how to extract $x";;
+ esac
done
}
ex "$@"