diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-01-29 21:54:51 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-01-29 21:54:51 +0900 |
| commit | f9f1ce2af8546c0825192a8c89d596c200d7fe2d (patch) | |
| tree | 1cb3a411bcc9ebbb429aba050bf7eb9cab3575cc /ar/.local/bin/extract | |
| parent | cd12c95fbb657a20f256cde65a736ab0ab53e0e6 (diff) | |
modified lf/lfrc, modified x11/xprofile, modified zsh/scripts.zsh, modified bin/dmenuconnections, created bin/extract
Diffstat (limited to 'ar/.local/bin/extract')
| -rwxr-xr-x | ar/.local/bin/extract | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ar/.local/bin/extract b/ar/.local/bin/extract new file mode 100755 index 0000000..b352a70 --- /dev/null +++ b/ar/.local/bin/extract @@ -0,0 +1,41 @@ +#!/bin/sh + +# Default behavior: Extract archive into new directory +# Behavior with `-c` option: Extract contents into current directory + +while getopts "hc" o; do case "${o}" in + c) extracthere="True" ;; + *) printf 'Options:\n -c: Extract archive into current directory rather than a new one.\n' && exit ;; + esac done + +if [ -z "$extracthere" ]; then + archive="$(readlink -f "$*")" && + directory=${archive%.*} && + mkdir -p "$directory" && + cd "$directory" || exit +else + archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)")" +fi + +[ "$archive" = "" ] && printf 'Give archive to extract as argument.\n' && exit + +if [ -f "$archive" ]; then + case "$archive" in + *.tar.bz2 | *.tar.xz | *.tbz2) tar xvjf "$archive" ;; + *.tar.gz | *.tgz) tar xvzf "$archive" ;; + *.lzma) unlzma "$archive" ;; + *.bz2) bunzip2 "$archive" ;; + *.rar) unrar x -ad "$archive" ;; + *.gz) gunzip "$archive" ;; + *.tar) tar xvf "$archive" ;; + *.zip | *.jar | *.war) unzip "$archive" ;; + *.Z) uncompress "$archive" ;; + *.7z) 7z x "$archive" ;; + *.xz) unxz "$archive" ;; + *.exe) cabextract "$archive" ;; + *.ace) unace x "$archive" ;; + *) printf "extract: '%s' - unknown archive method\\n" "$archive" ;; + esac +else + printf 'File "%s" not found.\n' "$archive" +fi |
