Gibt es eine Möglichkeit, mit bash das aktuelle Arbeitsverzeichnis zu pushen und abzulegen? Ich habe versucht zu schreiben, bash;cd dir; ./dostuff;exit;
aber das aktuelle Verzeichnis ist jetzt dir
.
66
Es gibt pushd
undpopd
Bash speichert einen Verlauf der von Ihnen besuchten Verzeichnisse. Sie müssen nur danach fragen. Bash speichert den Verlauf in einem Stapel und verwaltet den Stapel mit den Befehlen pushd und popd.
Beispiel:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
pushd Saves the current directory on the top of the directory stack and then cd to dir. With no arguments, pushd exchanges the top two directories.
Das Aufrufen
bash
startet eine neue Subshell, die über eine eigene Eingabe verfügt. Keiner der anderen Befehle wird ausgeführt, bis er beendet wird. Wenn Sie die auszuführenden Befehle mit Parens umgeben, wird auch eine neue Subshell gestartet, die Befehle werden jedoch in dieser Subshell ausgeführt.quelle
Wenn Sie nicht mehrere Ebenen des Verzeichnisverlaufs benötigen, können Sie auch Folgendes tun:
Im Vergleich zu
pushd
/popd
hat dies den Nachteil, dasscd foo
Sie im Falle eines Fehlers im falschen Verzeichnis mit landencd -
.(Ist wahrscheinlich
cd -
praktischer außerhalb von Skripten. "Gehen wir zurück, wo ich gerade war.")quelle
Ich verwende einen Alias, um die Änderungen in meinem Verzeichnis zu verfolgen, sodass ich irgendwo auf 'cd' zurückgreifen kann, wo ich 'cd' verwendet habe, oder auf zwei zurückgreifen kann, indem ich 'cd ..' usw .;
quelle
..cd
robust genug? es sieht so aus, als würde es nur die letzten 10 Gegenstände vom Stapel entfernen.