diff --git a/home_external/.bashrc b/home_external/.bashrc index 1b5d147..2ff28c1 100644 --- a/home_external/.bashrc +++ b/home_external/.bashrc @@ -186,26 +186,29 @@ colours() { # ex - archive extractor # usage: ex -ex () -{ - if [ -f $1 ] ; then - case $1 in - *.tar.bz2) tar xjf $1 ;; - *.tar.gz) tar xzf $1 ;; - *.bz2) bunzip2 $1 ;; - *.rar) unrar x $1 ;; - *.gz) gunzip $1 ;; - *.tar) tar xf $1 ;; - *.tbz2) tar xjf $1 ;; - *.tgz) tar xzf $1 ;; - *.zip) unzip $1 ;; - *.Z) uncompress $1;; - *.7z) 7z x $1 ;; - *) echo "'$1' cannot be extracted via ex()" ;; - esac - else - echo "'$1' is not a valid file" - fi +ex() { + if [[ ! -f "$1" ]]; then + echo "'$1' is not a valid file" + return 1; + fi + # FIXME 7z kann (theoretisch) tar + outdir=${1%.*} + case "$1" in + *.tar.bz2 | *.tbz | *.tbz2) + tar xjf $1 -C $outdir;; + *.tar.gz | *.tgz) + tar xzf $1 -C $outdir;; + *.tar) + tar xf $1 -C $outdir;; + *.7z | *.zip | *.gz | *.bz | *.bz2) + 7z x -o$outdir $1;; + *.rar) + unrar x $1;; + *.Z) + uncompress $1;; + *) + echo "'$1' cannot be extracted via ex()";; + esac } # BEGIN_KITTY_SHELL_INTEGRATION