Después de pushd
pasar demasiadas veces, quiero borrar todo el montón de caminos.
¿Cómo haría popd
todos los artículos en la pila?
Me gustaría popd
sin necesidad de saber cuántos hay en la pila.
El manual de bash no parece cubrir esto .
¿Por qué necesito saber esto? Soy fastidioso y limpiar la pila.
Respuestas:
dirs -c
es lo que buscas.fuente
Para vaciar la pila y restaurar el directorio de trabajo desde la parte inferior de la pila, ya sea:
recuperar ese directorio de
dirs
, cambiar a ese directorio y luego borrar la pila:La
-l
opción aquí enumerará las rutas completas, para asegurarse de que no fallemos si tratamos decd
ingresar~
, y-0
recupera la primera entrada desde la parte inferior de la pila.@ jw013 sugirió hacer este comando más robusto, evitando expansiones de ruta:
o,
popd
hasta que encuentre un error (que es el estado de unapopd
llamada cuando la pila de directorios está vacía):fuente
pushd
varias veces, luego eliminé uno de los directorios en el medio y luegopopd
fallé cuando intenté desenrollarlo. Necesitaba saltar sobre todas las cosas en el medio para volver al punto de partida.popd
no lo salvará :)pushd -0
lugar decd "$(dirs ...)"
.cd "$(...)"
funciona en el 90%, probablemente incluso en el 99% de los casos de uso, pero conpushd -0
usted puede decir con confianza el 100%. Hay tantos problemas potenciales y casos extremos asociados con la expansión de las rutas de archivo / directorio en el shell que lo más sólido es evitarlo por completo, lo quepushd -0
es muy conciso. No hay posibilidad de que te atrape un error con un caso extraño si nunca te arriesgas. Si desea leer más sobre los posibles dolores de cabeza relacionados con los nombres de archivos / rutas de Unix, un buen punto de partida es mywiki.wooledge.org/ParsingLs