Po pushd
zbyt wielu ingerencjach chcę wyczyścić cały stos ścieżek.
Jak miałbym popd
wszystkie przedmioty na stosie?
Chciałbym popd
bez 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.
Odpowiedzi:
dirs -c
jest tym, czego szukasz.źródło
Aby opróżnić stos i przywrócić katalog roboczy z dołu stosu:
pobierz ten katalog
dirs
, przejdź do tego katalogu i wyczyść stos:-l
Opcja tutaj pokaże pełne ścieżki, aby upewnić się, że nie powiedzie się, jeśli staramycd
się~
, a-0
pobiera pierwszy wpis z dna stosu.@ jw013 zasugerował zwiększenie niezawodności tego polecenia, unikając rozszerzenia ścieżki:
lub,
popd
dopóki nie wystąpi błąd (który jest statusempopd
połączenia, gdy stos katalogów jest pusty):źródło
pushd
kilka razy, a potem usunąłem jeden z katalogów pośrodku, a potempopd
zawiodł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.popd
nie uratuje cię :)pushd -0
zamiastcd "$(dirs ...)"
.cd "$(...)"
działa w 90%, prawdopodobnie nawet w 99% przypadków użycia, ale zpushd -0
pewnoś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, copushd -0
robi 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