Nachdem pushd
ich zu oft gearbeitet habe, möchte ich den gesamten Stapel von Pfaden löschen.
Wie würde ich popd
alle Artikel im Stapel?
Ich möchte popd
ohne zu wissen, wie viele im Stapel sind?
Das Bash-Handbuch scheint dies nicht zu behandeln .
Warum muss ich das wissen? Ich bin wählerisch und muss den Stapel ausräumen.
Antworten:
dirs -c
ist was Sie suchen.quelle
Um sowohl den Stapel leeren und das Arbeitsverzeichnis aus dem Stapelboden wiederherzustellen, entweder:
Rufen Sie dieses Verzeichnis ab
dirs
, wechseln Sie in dieses Verzeichnis und löschen Sie den Stack:Die
-l
Option hier listet vollständige Pfade auf, um sicherzustellen, dass wir nicht versagen, wenn wir versuchen, aufcd
zuzugreifen~
, und-0
ruft den ersten Eintrag vom unteren Stapel ab.@ jw013 schlug vor, diesen Befehl robuster zu machen, indem Pfaderweiterungen vermieden wurden:
oder,
popd
bis Sie auf einen Fehler stoßen (dies ist der Status einespopd
Aufrufs, wenn der Verzeichnisstapel leer ist):quelle
pushd
ein paar Mal angerufen hatte, dann eines der Verzeichnisse in der Mitte entfernt hatte und dannpopd
beim Versuch, mich zu entrollen , fehlgeschlagen war. Ich musste über all das verdammte Zeug in der Mitte springen, um wieder dorthin zu gelangen, wo ich angefangen hatte.popd
werden Sie nicht gerettet :)pushd -0
stattcd "$(dirs ...)"
.cd "$(...)"
funktioniert in 90%, wahrscheinlich sogar in 99% der Anwendungsfälle, aber mitpushd -0
100% kann man getrost sagen. Es gibt so viele potenzielle Fallstricke und Kantenfälle, die mit dem Erweitern von Datei- / Verzeichnispfaden in der Shell verbunden sind, dass das Robusteste darin besteht, sie ganz zu vermeiden, waspushd -0
sehr präzise ist. Es gibt keine Chance, von einem Käfer mit einem seltsamen Rand erwischt zu werden, wenn Sie niemals das Risiko eingehen. Wenn Sie mehr über die möglichen Probleme