Пройдя pushd
слишком много раз, я хочу очистить весь стек путей.
Как бы я popd
все предметы в стеке?
Я хотел бы popd
без необходимости знать, сколько в стеке?
Руководство по bash, похоже, не покрывает это .
Зачем мне это знать? Я привередливый и вычистить стопку.
Ответы:
dirs -c
это то, что вы ищете.источник
Чтобы очистить стек и восстановить рабочий каталог из нижней части стека, либо:
получить этот каталог из
dirs
, перейти в этот каталог, а затем очистить стек:-l
Вариант здесь будут перечислены полные пути, чтобы убедиться , что мы не потерпеть неудачу , если мы пытаемсяcd
в~
, и-0
извлекает первый элемент из нижней части стека.@ jw013 предложил сделать эту команду более надежной, избегая расширений пути:
или,
popd
пока вы не столкнетесь с ошибкой (которая является состояниемpopd
вызова, когда стек каталога пуст):источник
pushd
несколько раз, затем удалил один из каталогов в середине, а затемpopd
потерпел неудачу, когда попытался развернуть. Мне нужно было перепрыгнуть все гадости в середине, чтобы вернуться к тому, с чего начал.popd
не спасут вас :)pushd -0
вместоcd "$(dirs ...)"
.cd "$(...)"
работает в 90%, возможно, даже в 99% случаев использования, но сpushd -0
уверенностью можно сказать, 100%. Существует так много потенциальных ошибок и крайних случаев, связанных с расширением путей к файлам / каталогам в оболочке, что самое надежное, что нужно сделать, это просто полностью избежать этого, чтоpushd -0
очень лаконично. Если вы никогда не рискнете, у вас не будет шанса попасть в баг со странным крайним случаем. Если вы хотите больше узнать о возможных головных болях, связанных с именами файлов и путей Unix, хорошей отправной точкой будет mywiki.wooledge.org/ParsingLs