49 votes

Comment quitter l'explorateur de fichiers Ranger pour revenir à l'invite de commande tout en conservant le répertoire courant ?

J'utilise Explorateur de fichiers du terminal Ranger à partir d'un terminal linux.
Supposons que je démarre l'invite de commande dans le répertoire personnel et que je lance ranger

user@/home/user $ ranger

ranger opens..... et au sein du programme ranger que j'explore :

/media/ubuntu/sdf675d7sf5sdfs7/some_directory

Si j'appuie ensuite sur q pour quitter ranger, je suis renvoyé dans le même dossier que celui à partir duquel j'ai lancé ranger.

user@/home/user $

Est-il possible de quitter ranger, et de rester dans le répertoire dans lequel j'étais avec ranger, c'est à dire.

user@/media/ubuntu/sdf675d7sf5sdfs7/some_directory $

49voto

Gombai Sándor Points 3990

Selon son manuel

--choosedir=targetfile    
    Allows you to pick a directory with ranger. When you exit ranger, it will write the last visited directory into targetfile.

Il suffit donc de créer un alias comme celui-ci :

alias ranger='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"'

Il est recommandé d'écrire cet alias dans le rc de votre Shell préféré.

45voto

Maj + S

Si vous frappez Shift + S Il ouvre un nouveau Shell dans le répertoire courant.

Ensuite, si vous appuyez sur Ctrl + D sur le Shell, il revient à ranger .

Cette solution de contournement est souvent suffisante.

D'ailleurs, j'ai abandonné les gestionnaires de fichiers depuis quelques années maintenant, j'ai juste ceci dans mon bashrc à la place et je navigue dans les répertoires simplement avec la tabulation complète, c'est suffisant pour moi :

c() {
  if [ -n "$1" ]; then
    cd "$1" || return 1
  else
    cd ..
  fi
  ll
}
ll() ( ls -hl --time-style="+%Y-%m-%d_%H:%M:%S" "$@"; )

GitHub en amont .

26voto

Ogino Knaus Points 361

J'ai trouvé une solution plus simple. Lorsque vous installez Ranger, il place un script dans votre dossier bin qui, s'il est exécuté, démarre le programme. Mais si vous le sourcez, avec

$ source ranger

il lancera ranger et vous déposera dans le dernier dossier visité lorsque vous quitterez.

Ainsi, si vous souhaitez que ce comportement soit appliqué par défaut, il vous suffit de faire

$ alias ranger='source ranger'

ou mieux encore, mettez-le dans votre fichier .bashrc.

Pour consulter la documentation et l'implémentation de cette fonctionnalité, lisez le ranger script dans votre dossier bin.

4voto

dduxx Points 41

Pour faire suite à la réponse de Gombai Sándor, je suggère de procéder à un ajustement mineur de l'alias :

alias ranger='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"'

En remplaçant "$Home/rangerdir" par "$Home/.rangerdir", le fichier créé par l'alias est caché. Cela permet simplement de ne pas encombrer le dossier personnel de manière gênante.

3voto

Mehrad Mahmoudian Points 231

Je suis tombé sur une question similaire ailleurs avec meilleure réponse par rapport à Gambai et ses autres variantes proposées. Elle est meilleure depuis.

  1. il s'occupera du fichier créé en le plaçant dans le dossier tmp afin qu'il puisse être supprimé par le système
  2. il s'agit d'un code plus propre (bien que le Gambai's la réponse peut être convertie en fonction)

Il y a une fonction dans un fichier Shell déjà dans le repo git de ranger :

https://github.com/ranger/ranger/blob/master/examples/bash_automatic_cd.sh

function ranger-cd {
    # create a temp file and store the name
    tempfile="$(mktemp -t tmp.XXXXXX)"

    # run ranger and ask it to output the last path into the
    # temp file
    ranger --choosedir="$tempfile" "${@:-$(pwd)}"

    # if the temp file exists read and the content of the temp
    # file was not equal to the current path
    test -f "$tempfile" &&
    if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
        # change directory to the path in the temp file
        cd -- "$(cat "$tempfile")"
    fi

    # its not super necessary to have this line for deleting
    # the temp file since Linux should handle it on the next
    # boot
    rm -f -- "$tempfile"
}

Vous pouvez placer cette fonction dans le rc Shell de votre favori (par exemple ~/.zshrc ) et créer un alias et/ou le lier à une combinaison de touches (là encore, les deux peuvent se trouver dans le fichier rc) :

alias nav=ranger-cd

et/ou

# This will run the function by Ctrl+O through returning
# the string "ranger-cd" in addition to a new-line character
# to act as Enter key-press
bindkey -s "^o" "ranger-cd\n"

Avis de non-responsabilité : el bindkey ci-dessus fonctionne en ZSH et vous devez le modifier en fonction de votre Shell préféré.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X