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.

Antworten:


284

Sie können verwenden

cd -

oder du könntest verwenden

cd $OLDPWD

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.


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.


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.


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.