在 ing 太多次之后pushd
,我想清除整个路径堆栈。
我将如何处理popd
堆栈中的所有项目?
我想popd
不需要知道堆栈中有多少个?
bash手册没有似乎涵盖了这个。
为什么我需要知道这个?我很挑剔并清理堆栈。
答案1
dirs -c
就是您正在寻找的。
答案2
为了既清空堆栈和从堆栈底部恢复工作目录,可以:
从 检索该目录
dirs
,更改为该目录,然后清除堆栈:cd "$(dirs -l -0)" && dirs -c
这里的选项
-l
将列出完整路径,以确保我们尝试cd
进入时不会失败~
,并且-0
从堆栈底部检索第一个条目。@jw013 建议通过避免路径扩展来使该命令更加健壮:
pushd -0 && dirs -c
或者,直到遇到错误(这是目录堆栈为空时的调用
popd
状态):popd
while (( $? == 0 )); do popd; done