usuwanie lub czyszczenie stosu ścieżek popd / pushd

39

Po pushdzbyt wielu ingerencjach chcę wyczyścić cały stos ścieżek.

Jak miałbym popdwszystkie przedmioty na stosie?

Chciałbym popdbez potrzeby wiedzieć, ile jest na stosie?

Wydaje się, że instrukcja bash nie obejmuje tego .

Dlaczego muszę to wiedzieć? Jestem wybredna i muszę wyczyścić stos.

chrisjlee
źródło
1
BTW, pełna instrukcja bash jest na gnu.org. Jeśli używasz wersji wszystko na jednej stronie, może być łatwiej znaleźć tam rzeczy.
jw013,
Ach, Google go zindeksował. Dzięki @ jw013
chrisjlee

Odpowiedzi:

47

dirs -c jest tym, czego szukasz.

jw013
źródło
1
powoduje to opróżnienie stosu, ale nie przywraca katalogu roboczego ze spodu stosu
Eliran Malka
8

Aby opróżnić stos i przywrócić katalog roboczy z dołu stosu:

  • pobierz ten katalog dirs, przejdź do tego katalogu i wyczyść stos:

    cd "$(dirs -l -0)" && dirs -c

    -lOpcja tutaj pokaże pełne ścieżki, aby upewnić się, że nie powiedzie się, jeśli staramy cdsię ~, a -0pobiera pierwszy wpis z dna stosu.

    @ jw013 zasugerował zwiększenie niezawodności tego polecenia, unikając rozszerzenia ścieżki:

    pushd -0 && dirs -c
  • lub, popddopóki nie wystąpi błąd (który jest statusem popdpołączenia, gdy stos katalogów jest pusty):

    while (( $? == 0 )); do popd; done
Eliran Malka
źródło
1
Pierwsza metoda jest dokładnie tym, czego chciałem. Drugi nie zadziałałby w moim przypadku, ponieważ zadzwoniłem pushdkilka razy, a potem usunąłem jeden z katalogów pośrodku, a potem popdzawiodłem, gdy próbowałem się rozwinąć. Musiałem przeskoczyć wszystkie popękane rzeczy na środku, aby wrócić do miejsca, w którym zacząłem.
Chuck Wilbur
prawo @ChuckWilbur - jeśli zaszyfrowałeś stos reż, popdnie uratuje cię :)
Eliran Malka
Lepiej pushd -0zamiast cd "$(dirs ...)".
jw013,
@ jw013 jak to? to jeszcze bardziej zadziałałoby na stosie dir (który próbujemy tutaj wyczyścić ..)
Eliran Malka
1
cd "$(...)"działa w 90%, prawdopodobnie nawet w 99% przypadków użycia, ale z pushd -0pewnością możesz powiedzieć 100%. Istnieje tak wiele potencjalnych problemów i problemów związanych z rozszerzaniem ścieżek plików / katalogów w powłoce, że najbardziej niezawodną rzeczą jest po prostu ich całkowite uniknięcie, co pushd -0robi się bardzo zwięźle. Nie ma szans, aby złapać cię błąd z dziwną skrzynką, jeśli nigdy nie podejmiesz ryzyka. Jeśli chcesz przeczytać więcej na temat potencjalnych problemów związanych z nazwami plików / ścieżek uniksowych, dobrym punktem wyjścia jest mywiki.wooledge.org/ParsingLs
jw013