extract 880 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env bash
  2. # Unzip most filetypes automatically
  3. extract() {
  4. local a
  5. [[ $# -eq 0 ]] && { echo "usage: extract <archive...>" >&2; return 1; }
  6. for a in "$@"; do
  7. [[ ! -f $a ]] && { echo "$a: not a file" >&2; continue; }
  8. case $a in
  9. *.tar.*|*.tgz|*.tbz2) tar xvf "$a" --auto-compress ;;
  10. *.tar) tar xvf "$a" ;;
  11. *.gz) gunzip "$a" ;;
  12. *.bz2) bunzip2 "$a" ;;
  13. *.xz) unxz "$a" ;;
  14. *.zst) unzstd "$a" ;;
  15. *.zip) unzip "$a" ;;
  16. *.rar) unrar x "$a" ;;
  17. *.7z) 7z x "$a" ;;
  18. *.Z) uncompress "$a" ;;
  19. *) echo "$a: cannot extract" ;;
  20. esac
  21. done
  22. }
  23. # Allow script to be safely sourced
  24. if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
  25. extract "$@"
  26. exit
  27. fi