Wie gehe ich zum vorherigen Arbeitsverzeichnis im Terminal?

213

Wie kann ich im Terminal einen Schlüssel definieren, um zum vorherigen Verzeichnis zu gelangen, in dem ich mich befunden habe, als ich mit dem cdBefehl das Verzeichnis gewechselt habe ?

Zum Beispiel bin ich in /opt/soft/binund ich cdin /etc/squid3und ich möchte zum ersten Verzeichnis zurückkehren.

Hojat Taheri
quelle

Antworten:

284

Sie können verwenden

cd -

oder du könntest verwenden

cd $OLDPWD
Raphael Ahrens
quelle
3
Irgendeine Idee, warum der Verzeichnisname bei Verwendung von "cd -" auf der Konsole ausgegeben wird?
DTMLAND
4
Wahrscheinlich war es hilfreich, den Namen des Verzeichnisses bei der Eingabe zu sehen, da in den alten Shells der Name des aktuellen Verzeichnisses in der Eingabeaufforderung nicht angezeigt wurde cd -. Wenn Sie beispielsweise eingeben cd /usr/local, wissen Sie, dass Sie sich in befinden /usr/loal, aber wenn Sie eingeben cd -, erinnern Sie sich nicht immer, aus welchem ​​Verzeichnis Sie stammen. Das erspart Ihnen das Tippen cd -; pwd. Aber das ist alles Spekulation.
Raphael Ahrens
2
Oder Sie können Aliasing verwenden: Richten Sie Alias alias -- -='cd -'dann verwenden -(1 Zeichen) statt cd -(4 Zeichen). Schneller:D
ADTC
2
Wie könnte ich jemals ohne das leben?
VSZM
1
@ AndréKuhlmann Das kannst du cd -zweimal machen. Sie cd /; cd /usr; cd -; cd -sollten Sie sein /usr. Aber vielleicht habe ich deine Frage nicht verstanden.
Raphael Ahrens
54

Die anderen Antworten sind definitiv vollständig im Sinne der direkten Antwort. cd -und cd $OLDPWDsind definitiv die Hauptentscheidungen dafür. Allerdings finde ich oft , dass in einen Workflow immer mit pushdund popdbesser funktioniert.

Um es kurz zu machen: Wenn Sie in ein Verzeichnis wechseln, um zu Ihrem Ausgangspunkt zurückzukehren, verwenden Sie pushd/ popd.

Erweitertes Beispiel

Der Hauptunterschied wird leicht durch ein Beispiel gezeigt.

$ cd dir1
$ pushd dir2

Zu diesem Zeitpunkt haben Sie einen Verzeichnis-Stack dir2, dir1. Wenn Sie pushdohne Argumente ausführen, werden Sie wieder in dir1den Stapel als versetzt dir1, dir2. popdwürde das gleiche tun, aber Sie mit einem leeren Verzeichnisstapel verlassen. Dies ist nicht viel anders als beim cd -Workflow.

Jetzt können Sie jedoch die Verzeichnisse mehrmals wechseln und zu zurückkehren dir1. Zum Beispiel,

$ cd dir1
$ pushd dir2
$ cd dir3

Wenn Sie popdzu diesem Zeitpunkt ausgeführt werden, kehren Sie zu zurück dir1.

Josh Berry
quelle
2
Sie können auch Verzeichnisse stapeln, also immer wieder verwenden pushdund beim popd-en zum vorherigen Ordner zurückkehren .
Bernhard
1
Bestimmt. Ich habe fast ein großes Beispiel angeführt, das das Überprüfen des Stapels mit einschließt dirs -v, aber die Realität für mich ist, dass oft der einfache Fall alles ist, was ich wirklich benutze. (Oder, schlimmer noch, ich mache einen Fehler, wenn ich es versuche push +2oder ähnliches). Außerdem dachte ich, Babyschritte, um jemanden dazu zu bringen, den Workflow zu testen. :)
Josh Berry
Wie kommst du cdan die Spitze des Stapels, ohne zu knallen?
Jon Deaton
18

Du solltest benutzen:

cd ~-

Es macht dasselbe wie cd -(aus der aktuell akzeptierten Antwort) ohne das störende Echo des Verzeichnisses und ist einfacher zu tippen als cd "$OLDPWD"oder cd - > /dev/null.

Anthon
quelle
2
Das Echo in eine Nulldatei umleiten! Es ist ein Genie !!
Ram
2
Das Echo zeigt das neue Verzeichnis an, nicht das vorherige. Und ich würde es nützlich finden, damit ich weiß, wo ich jetzt bin, besonders wenn ich mich in einer Shell befinde, die nur den aktuellen Verzeichnisnamen (oder gar nichts) auf der Eingabeaufforderung anzeigt, und ich bin zu ungestört, um das zu ändern Eingabeaufforderung, um den vollständigen Pfad anzuzeigen. Wenn Ihre Eingabeaufforderung bereits den vollständigen Pfad anzeigt, ist das Echo natürlich überflüssig und störend. In diesem Fall denke ich , Sie tun können versuchen , alias -- -='cd "$OLDPWD"'mit dann -(1 Zeichen) statt cd ~-(5 Zeichen). :)
ADTC
Quelle und Erklärung: unix.stackexchange.com/a/330885/38213 Spoiler, - ist ein Operand und ~ 's sind Pfad-Aliase. So cd ~-/..klappt das aber cd -/..nicht!
Ray Foss
16
$ cd - 

wechselt zum vorherigen Arbeitsverzeichnis.

Mezi
quelle
3

Sie können einen Schlüssel für 'cd -' definieren, indem Sie Ihre '~ / .bashrc'-Datei bearbeiten und einen Alias ​​für den Befehl hinzufügen. Zum Beispiel könnten Sie 'cdc' hinzufügen, um es zu 'cd -' zu machen, was Ihnen einen kürzeren Weg bietet, zum letzten Verzeichnis zu gelangen, indem Sie Folgendes hinzufügen:

alias cdc='cd -'

Auf diese Weise würden Sie einfach 'cdc' eingeben und sich in Ihrem letzten Arbeitsverzeichnis befinden.

Atari911
quelle
5
Und verwirren Sie, wenn Sie ein System verwenden, in dem dieser Alias ​​nicht vorhanden ist. Es speichert die Eingabe eines Zeichens von Zeit zu Zeit. Warum überhaupt die Mühe machen?
einen Lebenslauf vom
2
" Wie kann ich im Terminal einen Schlüssel definieren , um zum vorherigen Verzeichnis zu gelangen?" Ich werde nie verwirrt. Es ist nur eine Abkürzung, wenn Sie sich auf einem anderen System befinden, verwenden Sie einfach den langen Weg.
Atari911
@ Atari911 tolle frage! Hier ist die Antwort: stackoverflow.com/questions/4200800 Hier ist, was ich getan habe (gebundenes F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(oder besser in eine inputrcDatei verschieben, wie in der Antwort erwähnt).
ADTC
1

cd ..Wechselt zum vorhergehenden Ordner in der Ordnerstruktur.
cd -geht in den Ordner, in dem es vorher war. Dieser Befehl hat auf einigen Distributionen (Ubuntu 16.04) nicht funktioniert, funktioniert in Debian 9.

Skorpion
quelle