
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, cd
das 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ürcd
Erwä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 pushd
und popd
gibt, 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 popd
hintereinander 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 cd
Dateien 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-R
und einige Buchstaben des cd
zuvor eingegebenen Befehls eingeben. Durch CTRL-R
wiederholtes Drücken werden ältere Treffer angezeigt.
Diese Methode ist nützlicher, wenn Sie mehr als zwei Pfade ändern müssen.