видалення чи очищення стека шляхів popd / pushd


39

Після pushdзанадто багато разів, я хочу очистити всю групу стежок.

Як би я popdвсі предмети в стеку?

Мені хотілося б, popdне знаючи, скільки їх у групі?

Схоже, посібник з bash не покриває цього .

Навіщо мені це потрібно знати? Я вибагливий і очищати стопку.


1
BTW, повний посібник з баш- файлу закінчений на gnu.org. Якщо ви використовуєте версію "Усі на одній сторінці", можливо, там буде знайти речі простіше.
jw013

Ах, бажаю, щоб Google проіндексував це. Дякуємо @ jw013
chrisjlee

Відповіді:


47

dirs -c це те, що ви шукаєте.


1
це робить порожній стек, але НЕ відновити робочий каталог з дна стека
Eliran Малка

8

Для того, щоб спорожнити стек і відновити робочу директорію знизу стека, виконайте такі дії:

  • витягніть цей каталог dirs, перейдіть до цього каталогу та очистіть стек:

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

    -lВаріант тут будуть перераховані повні шляхи, щоб переконатися , що ми не зазнати невдачі , якщо ми намагаємося cdв ~, і -0витягує перший елемент з нижньої частини стека.

    @ jw013 запропонував зробити цю команду більш надійною, уникаючи розширень шляху:

    pushd -0 && dirs -c
  • або, popdпоки ви не зіткнетеся з помилкою (що є статусом popdвиклику, коли стек каталогів порожній):

    while (( $? == 0 )); do popd; done

1
Перший метод - саме те, що я хотів. Другий не спрацював би в моєму випадку, оскільки я зателефонував pushdкілька разів, потім видалив один із каталогів посередині, а потім popdпровалився, коли я намагався скасувати. Мені потрібно було перестрибнути всі роздуті речі в середині, щоб повернутися туди, де я почав.
Чак Вільбур

направо @ChuckWilbur - якщо ви заблукали стек з режисерами, popdне врятуєте вас :)
Eliran Malka

Краще pushd -0замість цього cd "$(dirs ...)".
jw013

@ jw013 як так? це ще більше
зіпсує стек з режисером

1
cd "$(...)"працює в 90%, мабуть, навіть у 99% випадків використання, але з pushd -0упевненістю можна сказати 100%. З розширенням контурів файлів / каталогів в оболонці існує стільки потенційних випадків і крайових випадків, що найскладніша річ - це просто уникати її взагалі, що pushd -0дуже стисло. Немає шансів потрапити у помилку із дивним краєм, якщо ви ніколи не ризикуєте. Якщо ви хочете додатково прочитати можливі головні болі, пов’язані з іменами файлів / шляхів Unix, хорошим початковим пунктом є mywiki.wooledge.org/ParsingLs
jw013
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.