Ranger-Dateimanager: So können Sie Archivdateien mit einem benutzerdefinierten Skript öffnen?

Ranger-Dateimanager: So können Sie Archivdateien mit einem benutzerdefinierten Skript öffnen?

Ich habe ein benutzerdefiniertes Bash-Skript erworben, das alle Archivdateien extrahiert und auf Eingaben wartet. Unten:

    #!/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

Ich verwende Ranger FM. Ich versuche, es dazu zu bringen, das Skript /usr/bin/extract.sh zu verwenden, um alle Archivdateien zu öffnen. Das Ausführen des Skripts von einem Terminal aus ist kein Problem, aber wenn ich versuche, es in Ranger zu verwenden, erhalte ich:

/usr/bin/extract.sh – Bezeichnung ist nicht definiert.

Ich habe meiner .config/ranger/rifle.conf Folgendes hinzugefügt:

Bezeichnungsextrakt, Erw. 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, = /usr/bin/extract.sh -- "$@"

Aber es funktioniert nicht. Was habe ich falsch gemacht?

Vielen Dank im Voraus.

Antwort1

Ich habe es gelöst. Für alle, die es interessiert: Es war eine Kombination aus einem einfachen Syntaxfehler und der Notwendigkeit:

  1. Legen Sie das Skript mit dem Namen extract.sh in /bin/extract ab (ohne .sh).

  2. Fügen Sie .zshrc einen Alias ​​wie diesen hinzu: alias extract="/bin/extract"

  3. Habe folgende Zeilen in .config/ranger/rifle.conf (der Syntaxfehler :)):

    ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, hat aunpack = extrahieren "$@"

    ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, hat tar, ' Flag f = extrahiere "$@"

    Bezeichnung extrahieren, ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, = /bin/extract

verwandte Informationen