web-dev-qa-db-ja.com

bashでプッシュされた深さを検出しますか?

Bashシェル内で、pushdスタックが空でないことをプログラムで検出できるようにしたいと思います。これを検出する方法はありますか?

$ SHLVLに似たものがいいでしょう。しかし、これまでのところ、私が見つけた唯一の解決策は、pushdpopdを、オリジナルの出力を解析して深さを検出するエイリアスでラップすることです。それはうまくいくでしょうが、それは特にエレガントに感じません。 (明らかに、情報は環境のどこかに保存されています。)

私の理由は、これが当てはまる場合、プッシュされた深度カウントでbashプロンプトを飾りたいからです。

1
Ryan V. Bissell

DIRSTACKの長さを確認できます:

$ [[ ${#DIRSTACK[@]} -gt 1 ]] && echo dir stack non-empty

DIRSTACKが設定されていない場合、このメソッドを使用できないことに注意してください。

3
cuonglm
depth=$( ( $(dirs -v | wc -l) -1) )

別の劣った解決策です。

2
barksdml