Adquiri um script bash personalizado que extrai todos os arquivos compactados e aguarda a entrada. Abaixo:
#!/bin/bash
GET="."
SCRIPTNAME="${0##*/}"
err() {
printf >&2 "$SCRIPTNAME: $*\n"
exit 1
}
ARC="$1"
[[ -f $ARC ]] || err $"'$ARC' does not exist"
ARC="$(readlink -f "$ARC")"
read -p "Extract to [default: $DEFAULT_TARGET]: " TARGET
[[ -z $TARGET ]] &&\
TARGET="$DEFAULT_TARGET"
[[ -d $TARGET ]] || err $"Directory '$TARGET' does not exist"
[[ -w $TARGET ]] || err $"Permission denied: '$TARGET' is not writable"
cd "$TARGET"
case "$ARC" in
*.tar.bz2) tar xjf "$ARC" ;;
*.tar.gz) tar xzf "$ARC" ;;
*.bz2) bunzip2 "$ARC" ;;
*.rar) unrar e "$ARC" ;;
*.gz) gunzip "$ARC" ;;
*.tar) tar xf "$ARC" ;;
*.tbz2) tar xjf "$ARC" ;;
*.tgz) tar xzf "$ARC" ;;
*.zip) unzip "$ARC" ;;
*.Z) uncompress "$ARC" ;;
*.7z) 7z x "$ARC" ;;
*) echo "'$ARC' cannot be extracted by $SCRIPTNAME" ;;
esac
Estou usando a Ranger FM. Estou tentando fazer com que ele use o script /usr/bin/extract.sh para abrir todos os arquivos compactados. Executar o script a partir de um terminal não é problema, mas ao tentar usá-lo no Ranger, recebo:
/usr/bin/extract.sh - o rótulo é indefinido.
Adicionei o seguinte ao meu .config/ranger/rifle.conf:
extrato de rótulo, ramal 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, = /usr/bin/extract.sh -- "$@"
No entanto, não está funcionando. O que eu fiz de errado?
Agradeço antecipadamente.
Responder1
Eu resolvi isso. Para qualquer pessoa interessada, foi uma combinação de um simples erro de sintaxe e a necessidade de:
Coloque o script, denominado extract.sh, em /bin/extract (sem .sh)
Adicione um alias como tal a .zshrc: alias extract="/bin/extract"
Tenha as seguintes linhas em .config/ranger/rifle.conf (o erro de sintaxe :):
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, tem aunpack = extrair "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has tar, ' flag f = extract "$@"
extrato de rótulo, ramal 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, = /bin/extract