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

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

在 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
    

相关内容