web-dev-qa-db-fra.com

Supprimer ou nettoyer la pile de chemins POPD / POUTS

Après pushding trop souvent, je veux effacer toute la pile de chemins.

Comment irait-il popd tous les éléments de la pile?

Je voudrais popd Sans avoir besoin de savoir combien y a-t-il dans la pile?

Le manuel Bash ne semble couvrir ceci .

Pourquoi ai-je besoin de savoir ça? Je suis fastidieux et nettoyer la pile.

40
chrisjlee

dirs -c est ce que vous recherchez.

48
jw013

Afin de vider la pile et restaurer le répertoire de travail du bas de la pile, soit:

  • récupérez ce répertoire de dirs, changez-le à ce répertoire et claire la pile:

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

    Les -l Option ici va répertorier les chemins complets, pour vous assurer que nous n'échouons pas si nous essayons de cd dans ~, et le -0 récupère la première entrée du fond de la pile.

    @ jw013 a suggéré de rendre cette commande plus robuste, en évitant les expansions des chemins:

    pushd -0 && dirs -c
    
  • ou, popd jusqu'à ce que vous rencontriez une erreur (qui correspond à l'état d'un appel popd appeler lorsque la pile d'annuaires est vide):

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