X-Git-Url: https://iankelling.org/git/?p=small-misc-bash;a=blobdiff_plain;f=ex-function;h=79800235001ce49d97011cfa9a5bf06528cf8bbe;hp=0394dde5d800f874ef600a457781c74773cded07;hb=126ac3e0bc51962003e6a539dee03e928f68efe4;hpb=e409ebcdfd1ecc0aeae511d3a62caf6006b2643d diff --git a/ex-function b/ex-function index 0394dde..7980023 100644 --- a/ex-function +++ b/ex-function @@ -14,12 +14,14 @@ # limitations under the License. ex() { - local help="Usage: ex [--help] FILE ... -Extract each FILE according to its extension." + 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." 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";;