Wie beendet man den Ranger-Datei-Explorer wieder an der Eingabeaufforderung, behält aber das aktuelle Verzeichnis bei?

7245
the_velour_fog

Ich verwende den Ranger Terminal File Explorer in einem Linux-Terminal.
Angenommen, ich starte von der Eingabeaufforderung im Home-Verzeichnis und starte Ranger

user@/home/user $ ranger 

Ranger öffnet sich .... und im Rahmen des Ranger-Programms erkunde ich:

/media/ubuntu/sdf675d7sf5sdfs7/some_directory 

Wenn ich dann q drücke, um Ranger zu beenden, wird ich wieder in den Ordner zurückgelegt, aus dem Ranger gestartet wurde. dh

user@/home/user $ 

Ist es möglich, Ranger zu beenden und in dem Verzeichnis zu bleiben, in dem ich bei Ranger war, d. H.

user@/media/ubuntu/sdf675d7sf5sdfs7/some_directory $ 
17

6 Antworten auf die Frage

20
Gombai Sándor

Nach seinem Handbuch

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

Sie müssen also nur einen Alias ​​wie folgt erstellen:

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

Es wird empfohlen, diesen Alias ​​in das RZ Ihrer bevorzugten Shell zu schreiben.

wow das ist ziemlich klug. Ich kam nie auf die Idee, einem Programm einen Befehl zu geben, es mit einem ";" zu beenden und dann nach dem Semikolon weitere Befehle anzugeben, die - Ich gehe davon aus, dass sie an dem Punkt ausgeführt werden, an dem Sie 'Ranger' schließen , Vielen Dank! the_velour_fog vor 8 Jahren 2
Verwenden Sie stattdessen `.rangerdir`, um es auszublenden. Oder lösche es am Ende, `rm -d $ HOME / rangerdir`. Mateen Ulhaq vor 6 Jahren 0
Das ist großartig, aber wenn ich es richtig verstehe, würde dies bedeuten, dass Sie dieses Verhalten dauerhaft haben. Es wäre schön, wenn Sie die Möglichkeit hätten, in das aktuelle Ranger-Verzeichnis ODER in das Verzeichnis zu wechseln, in dem Sie sich beim Start von Ranger befanden. neverfox vor 6 Jahren 0
neverfox Wenn Sie einen Alias ​​erstellt haben, liegt es an Ihnen, ob Sie die Auswahl des Verzeichnisses anbieten, das in diesem Alias ​​landet. Die Auswahl kann vor dem Aufruf der Binärdatei oder danach erfolgen. Gombai Sándor vor 6 Jahren 0
Vielen Dank für diese tolle Lösung! Ich benutze gerade die Fish-Shell. Um meinen Alias ​​zu setzen, habe ich `fish_config` verwendet und eine Abkürzung für` ranger --choosedir = "$ HOME / .rangerdir" hinzugefügt. cd (cat $ HOME / .rangerdir) ` rockzombie2 vor 5 Jahren 0
15
Ciro Santilli 新疆改造中心 六四事件 法轮功

S

Wenn Sie auf klicken S, wird eine neue Shell im aktuellen Verzeichnis geöffnet.

Wenn Sie dann Ctrl + Dauf die Schale klicken, wird wieder zu ranger.

Diese Problemumgehung ist häufig gut genug.

3
dduxx

Um die Antwort von Gombai Sándor zu huckeln, schlage ich vor, den Alias ​​geringfügig anzupassen:

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

Durch Ändern von "$ home / rangerdir" in "$ home / .rangerdir" wird die durch den Alias ​​erstellte Datei ausgeblendet. macht es einfach so, dass es den Home-Ordner nicht stört. Es macht keinen funktionalen Unterschied, wie es funktioniert.

3
Ogino Knaus

Ich habe eine einfachere Lösung gefunden. Wenn Sie Ranger installieren, wird ein Skript in Ihrem bin-Ordner abgelegt, der das Programm startet, wenn es ausgeführt wird. Aber wenn Sie es beschaffen, mit

$ source ranger

Es wird Ranger gestartet und beim Beenden im zuletzt besuchten Ordner abgelegt.

Wenn Sie dieses Verhalten standardmäßig haben möchten, tun Sie dies einfach

$ alias ranger = 'source ranger'

oder noch besser in Ihre .bashrc-Datei einfügen.

Lesen Sie das Ranger-Skript in Ihrem bin-Ordner, um die Dokumentation und Implementierung dieser Funktion anzuzeigen.

1
garzai

Danke für Gombai für die Inspiration, aber auf Ubuntu 14.04 LTS fand ich, dass die Lösung nicht ganz funktioniert hat. Wenn ich es etwas modifiziere und als Alias ​​in meiner .bashrc speichere, funktionierte das folgende einwandfrei (nachdem die rangerdirDatei erstellt wurde):

alias ranger='ranger --choosedir=$HOME/rangerdir;cd "$(cat $HOME/rangerdir)"'

Der folgende Beitrag auf askubuntu half mir dabei herauszufinden, warum verschiedene Lösungen, die ich versuchte, nicht funktionierten: https://askubuntu.com/questions/404141/why-cant-i-pipe-into-cd

0
girvain

Das ist jetzt ein bisschen alt, aber ich bin mit dem gleichen Problem hier gelandet. Ciro Santilli sagte weiter oben, dass, wenn Sie "S" drücken, wenn er sich im Ranger befindet, er in einer neuen Shell geöffnet wird. Nun, auf meinem System öffnet "S" in einem Verzeichnis das Verzeichnis in der aktuellen Shell, genau das, was ich wollte. Hoffe das hilft anderen Menschen.