web-dev-qa-db-ja.com

popd / pushdパスのスタックの削除またはクリア

pushdingを何度も実行した後、パスのスタック全体をクリアしたいと思います。

スタック内のすべてのアイテムをどのようにpopdしますか?

スタックに何個あるかを知らなくてもpopdしたいですか?

Bashマニュアルは これをカバーしているようです ではありません。

なぜこれを知る必要があるのですか?私は気難しいし、スタックを一掃する。

40
chrisjlee

dirs -cはあなたが探しているものです。

48
jw013

両方のスタックを空にするためにandスタックの下部から作業ディレクトリを復元します。

  • dirsからそのディレクトリを取得し、そのディレクトリに移動して、スタックをクリアします。

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

    ここの-lオプションはフルパスをリストします。これにより、cd~に入れようとしても、-0が最初のエントリを取得しても失敗しないようにします。スタックの底。

    @ jw013は、パスの拡張を回避することにより、このコマンドをより堅牢にすることを提案しました:

    pushd -0 && dirs -c
    
  • または、エラーが発生するまでpopd(ディレクトリスタックが空の場合のpopd呼び出しのステータスです):

    while (( $? == 0 )); do popd; done
    
8
Eliran Malka