Wie kann ich in das vorherige Verzeichnis wechseln, anstatt nach oben zu gehen?

Wie kann ich in das vorherige Verzeichnis wechseln, anstatt nach oben zu gehen?

Ich verbringe derzeit einen Großteil meiner Arbeitszeit damit, zwischen zwei Pfaden hin und her zu wechseln, die sehr weit unten im Baum liegen und an der Wurzel voneinander abweichen. Mir fällt auf, dass mein Leben viel einfacher wäre, wenn es ein Argument dafür gäbe, cddas den Benutzer zum letzten Verzeichnis zurückbringt, in dem er sich befand.

Das heißt, wenn ich dabei bin:

/etc/foo/bar/baz/moo

und geben Sie dann ein:

cd /var/lib/fubarred_app/blargh/logs

Ich möchte zum ersten Verzeichnis zurückkehren können, ohne den gesamten Pfad erneut eingeben zu müssen.

Mit der Speichertaste gelingt es nicht, da ich an jeder Stelle so viele Befehle verwende, dass es genauso schwierig ist, zurückzugehen und den gewünschten Pfad zu finden, wie ihn selbst einzugeben.

Gibt es einen kurzen Befehl, mit dem ich einfach zum vorherigen Verzeichnis gelangen kann?

Antwort1

Der Befehl

cd -

führt den erforderlichen Swap auf den meisten Mainstream-Shells durch, die ältere längere Variante ist

cd "$OLDPWD"

dadurch wird die Umgebungsvariable verwendet, die das vorherige Arbeitsverzeichnis enthält.


DerPOSIX-Manpage fürcdErwähnungen:

BESCHREIBUNG

Wenn während der Ausführung der obigen Schritte die Umgebungsvariable PWD geändert wird, muss auch die Umgebungsvariable OLDPWD auf den Wert des alten Arbeitsverzeichnisses (d. h. des aktuellen Arbeitsverzeichnisses unmittelbar vor dem Aufruf von cd) geändert werden.

OPERANDEN

  -  Wenn als Operand ein Bindestrich verwendet wird, entspricht dies dem Befehl:

cd "$OLDPWD" && pwd 

welches in das bisherige Arbeitsverzeichnis wechselt und anschließend dessen Namen schreibt.

Antwort2

Zusätzlich zu Bryans Antwort ist es erwähnenswert, dass es auch pushdund popdgibt, die Verzeichnisse wie einen Stapel aufbauen. Dies ist auch unter Windows NT verfügbar; es ist jedoch nicht in allen Shells verfügbar.

Beispielsweise können wir in drei verschiedene Verzeichnisse gehen, und Sie sehen immer Ihren Stapel, wenn Sie aufrufen pushd:

charon:~ werner$ pushd Documents/
~/Documents ~

charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~

charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~

Und bei dreimaligem Aufruf popdhintereinander gelangt man in umgekehrter Reihenfolge zu den Verzeichnissen im Stack. Gleichzeitig wird der Stack wieder geleert.

charon:Downloads werner$ popd
~/Movies ~/Documents ~

charon:Movies werner$ popd
~/Documents ~

charon:Documents werner$ popd
~

charon:~ werner$ popd
-bash: popd: directory stack empty

Wenn Sie Zsh verwenden, verfügt es über eine AUTO_PUSHD-Option, die automatisch cdDateien auf den Stapel schiebt.

Antwort3

Es gibt einige "Sprung"-Programme

  • automatischer Sprung(mit Grundfunktionen gepflegt)
  • j2 (anscheinend mit einigen erweiterten Funktionen nicht gepflegt)
  • z(gepflegte Version von „j“ mit erweiterten Funktionen)

Diese erleichtern jede Art der Verzeichnisnavigation. Sie verwenden es, indem Sie einen Teil des Pfads angeben, und es funktioniert einfach.

In Ihrem Fall

~$ j baz 
/etc/foo/bar/baz/moo$

~$ j bla 
/var/lib/fubarred_app/blargh/logs$

Sie können diesen Programmen jeden beliebigen Buchstaben zuweisen, „j“ ist Tradition :)

j2 und z unterstützen mehrere Suchbegriffe, ...

~$ j baz src
/home/me/projects/baz/repository/trunk/src$

... und weitere Optionen.

~$ j -l  # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank

Antwort4

Zusätzlich zu cd -undcd $OLDPWD

Sie können die Verlaufssuche verwenden, indem Sie drücken CTRL-Rund einige Buchstaben des cdzuvor eingegebenen Befehls eingeben. Durch CTRL-Rwiederholtes Drücken werden ältere Treffer angezeigt.

Diese Methode ist nützlicher, wenn Sie mehr als zwei Pfade ändern müssen.

verwandte Informationen