删除或清除 popd/pushd 路径堆栈

chr*_*lee 49 bash pushd

pushding 太多次之后,我想清除整个路径堆栈。

我将如何popd处理堆栈中的所有项目?

我想popd不需要知道堆栈中有多少?

bash 手册似乎没有涵盖这一点

为什么我需要知道这些?我很挑剔,要清理堆栈。

jw0*_*013 58

dirs -c 就是你要找的。

  • 这*确实*清空了堆栈,但*不*从堆栈底部恢复工作目录 (2认同)

Eli*_*lka 9

为了清空堆栈从堆栈底部恢复工作目录,可以:

  • `cd "$(...)"` 适用于 90% 甚至 99% 的用例,但是使用 `pushd -0` 你可以自信地说 100%。在 shell 中扩展文件/目录路径有很多潜在的问题和边缘情况,最可靠的方法就是完全避免它,`pushd -0` 做得非常简洁。如果您从不冒险,就没有机会被带有奇怪边缘情况的错误捕获。如果您想进一步了解 Unix 文件/路径名可能带来的麻烦,一个好的起点是 http://mywiki.wooledge.org/ParsingLs (3认同)