#!/usr/bin/env bash ex() { file=$1 [ -z "$file" ] && echo 'ex ' && return 1 [ ! -f "$file" ] && echo 'Invalid file: `'"$file"'`' && return 1 case "$file" in *.tar.bz2) tar xjf "$file" ;; *.tar.gz) tar xzf "$file" ;; *.bz2) bunzip2 "$file" ;; *.rar) unrar x "$file" ;; *.gz) gunzip "$file" ;; *.tar) tar xf "$file" ;; *.tbz2) tar xjf "$file" ;; *.tgz) tar xzf "$file" ;; *.zip) unzip "$file" ;; *.Z) uncompress "$file" ;; *.7z) 7z x "$file" ;; *.xz) unxz "$file" ;; *) echo 'Unknown suffix on file: `'"$file"'`' return 1 ;; esac } ex "$@"