extract 1.0 KB

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