Depois de pushd
muitas vezes, quero limpar toda a pilha de caminhos.
Como eu iria popd
todos os itens da pilha?
Gostaria popd
sem precisar saber quantos estão na pilha?
O manual do bash não parece cobrir isso .
Por que eu preciso saber disso? Sou exigente e limpo a pilha.
Respostas:
dirs -c
é o que você está procurando.fonte
Para esvaziar a pilha e restaurar o diretório de trabalho da parte inferior da pilha:
recupere esse diretório
dirs
, mude para esse diretório e limpe a pilha:A
-l
opção aqui listará os caminhos completos, para garantir que não falharemos se tentarmoscd
entrar~
e-0
recuperar a primeira entrada da parte inferior da pilha.@ jw013 sugeriu tornar esse comando mais robusto, evitando expansões de caminho:
ou,
popd
até encontrar um erro (que é o status de umapopd
chamada quando a pilha de diretórios estiver vazia):fonte
pushd
algumas vezes, depois removi um dos diretórios no meio epopd
falhou quando tentei desenrolar. Eu precisava pular todas as coisas ruins no meio para voltar para onde eu comecei.popd
não vai te salvar :)pushd -0
vez decd "$(dirs ...)"
.cd "$(...)"
funciona em 90%, provavelmente até 99% dos casos de uso, maspushd -0
você pode dizer com confiança 100%. Existem tantas dicas e casos de potencial associados à expansão de caminhos de arquivos / diretórios no shell que a coisa mais robusta a ser feita é evitá-la completamente, o quepushd -0
é muito conciso. Não há chance de ser pego por um bug com um caso estranho, se você nunca correr o risco. Se você quiser ler mais sobre as possíveis dores de cabeça envolvidas nos nomes de arquivos / caminhos do Unix, um bom ponto de partida é mywiki.wooledge.org/ParsingLs