X-Git-Url: https://iankelling.org/git/?p=small-misc-bash;a=blobdiff_plain;f=ex-function;h=79800235001ce49d97011cfa9a5bf06528cf8bbe;hp=91733c3284dd0b7dac2e9177338cc72d3591beb0;hb=126ac3e0bc51962003e6a539dee03e928f68efe4;hpb=2b28ddb6f3e6052441bd9899f6f28cf10a454357 diff --git a/ex-function b/ex-function index 91733c3..7980023 100644 --- a/ex-function +++ b/ex-function @@ -15,11 +15,13 @@ ex() { local help="Usage: ex [--help] FILE... -Extract each FILE according to its extension." +Extract each FILE according to its extension. +7z bz2 deb gz iso rar rpm tar xz zip & variations. +See source for exact file extensions." if [[ $1 == --help ]]; then echo "$help" fi - local x + local x super for x in "$@"; do case "$x" in *.tar.bz2 | *.tbz2 ) tar xvjf "$x" ;; @@ -34,13 +36,20 @@ Extract each FILE according to its extension." *.rpm ) rpm2cpio "$x" | cpio --extract --make-directories --verbose ;; *.tar.xz ) tar Jxvf "$x" ;; *.iso ) + 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 - s mount -o loop "$x" "$temp_dir" + $super mount -o loop "$x" "$temp_dir" local dir="${x%%.iso}" mkdir "$dir" cp -av "$temp_dir"/* "$dir" - s umount "$temp_dir" + $super umount "$temp_dir" ;; *.r[0-9][0-9]|*.rar ) unrar x "$x" ;; *) echo "I don't kno how to extract $x";;