¿Cómo ir al directorio de trabajo anterior en la terminal?

213

En la terminal, ¿cómo puedo definir una clave para ir al directorio anterior en el que estaba al cambiar de directorio con el cdcomando?

Por ejemplo, estoy dentro /opt/soft/biny cddentro /etc/squid3y quiero volver al primer directorio.

Hojat Taheri
fuente

Respuestas:

284

Puedes usar

cd -

o podrías usar

cd $OLDPWD
Raphael Ahrens
fuente
3
¿Alguna idea de por qué el nombre del directorio se imprime en la consola cuando se usa "cd -"?
dtmland
44
Probablemente, dado que los antiguos shells no mostraban el nombre del directorio actual en la solicitud, fue útil ver el nombre del directorio cuando escribía cd -. Por ejemplo, cuando escribe cd /usr/local, sabe que se encuentra /usr/loal, pero cuando escribe cd -no siempre recuerda de qué directorio proviene. Por lo tanto, te ahorra escribir cd -; pwd. Pero todo esto es especulación.
Raphael Ahrens
2
O puede usar alias: configure el alias como alias -- -='cd -'luego use -(1 char) en lugar de cd -(4 char). Más rápido:D
ADTC
2
¿Cómo podría vivir sin esto?
VSZM
1
@ AndréKuhlmann Puedes hacerlo cd -dos veces. ¿ cd /; cd /usr; cd -; cd -Deberías estar dentro /usr? Pero tal vez extraño entendí tu pregunta.
Raphael Ahrens
54

Las otras respuestas son definitivamente completas en el sentido de respuesta directa. cd -y cd $OLDPWDdefinitivamente son las principales opciones para esto. Sin embargo, a menudo encuentro que entrar en un flujo de trabajo pushdy popdfunciona mejor.

Para resumir, si te estás mudando a un directorio con la intención final de volver a donde empezaste, usa pushd/ popd.

Ejemplo extendido

La principal diferencia se muestra fácilmente con un ejemplo.

$ cd dir1
$ pushd dir2

En este punto, tiene una pila de directorios que es dir2, dir1. Ejecutar pushdsin argumentos lo pondrá nuevamente en dir1la pila ahora como dir1, dir2. popdharía lo mismo, pero te dejaría con una pila de directorios vacía. Esto no es muy diferente de cómo hubiera sido con el cd -flujo de trabajo.

Sin embargo, ahora puede cambiar los directorios varias veces y volver a dir1. Por ejemplo,

$ cd dir1
$ pushd dir2
$ cd dir3

Si corres popden este punto, volverás a dir1.

Josh Berry
fuente
2
También puede apilar directorios, por lo tanto, use repetidamente pushdy regrese a la carpeta anterior mientras está popdhaciendo.
Bernhard
1
Ciertamente. Casi pongo un gran ejemplo que incluía verificar la pila dirs -v, pero la realidad para mí es que a menudo el caso simple es todo lo que realmente uso. (O, lo que es peor, cometo un error al intentarlo push +2o similar) Además, pensé en pequeños pasos para lograr que alguien pruebe el flujo de trabajo. :)
Josh Berry
¿Cómo llegar cda la cima de la pila sin aparecer?
Jon Deaton
18

Deberías usar:

cd ~-

hace lo mismo que cd -(de la respuesta actualmente aceptada) sin el molesto eco del directorio y es más fácil de escribir que cd "$OLDPWD"o cd - > /dev/null.

Anthon
fuente
2
¡Redirigiendo el eco al archivo nulo! Es genial !!
Ram
2
El eco muestra el nuevo directorio, no el anterior. Y lo encontraría útil, para saber dónde estoy ahora, especialmente si estoy en un shell que solo muestra el nombre del directorio actual (o nada en absoluto) en el indicador, y no estoy demasiado molesto para cambiar el solicitar que se muestre la ruta completa. Por supuesto, si su mensaje ya muestra la ruta completa, el eco sería redundante y molesto. En ese caso, creo que puedes intentar hacerlo alias -- -='cd "$OLDPWD"'usando -(1 char) en lugar de cd ~-(5 char). :)
ADTC
Fuente y explicación: unix.stackexchange.com/a/330885/38213 Spoilers, - es un operando y ~ 's son alias de ruta. ¡Entonces cd ~-/..funciona pero cd -/..no funciona!
Ray Foss
16
$ cd - 

cambiará al directorio de trabajo anterior.

mezi
fuente
3

Puede "definir una clave" para 'cd -' editando su archivo '~ / .bashrc' e incluyendo un alias para el comando. Por ejemplo, podría agregar 'cdc' para convertirlo en 'cd -', lo que le proporcionaría una forma más corta de llegar al último directorio agregando:

alias cdc='cd -'

De esta manera, simplemente escribiría 'cdc' y lo colocaría en su último directorio de trabajo.

Atari911
fuente
55
Y lo confunde sin fin cuando usa un sistema donde ese alias no está en su lugar. Se ahorra escribiendo un personaje de vez en cuando. ¿Por qué molestarse?
un CVn
2
"En la terminal, ¿cómo puedo definir una clave para ir al directorio anterior?" Nunca me confundo. Es solo un atajo, cuando se encuentra en otro sistema, simplemente use el método manual.
Atari911
@ Atari911 gran pregunta! Aquí está la respuesta: stackoverflow.com/questions/4200800 Esto es lo que hice (encuadernado F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(o más preferiblemente moverlo al inputrcarchivo como se menciona en la respuesta).
ADTC
1

cd ..va a la carpeta precedente en el árbol de la carpeta.
cd -va a la carpeta que era antes. Este comando no funcionó en algunas distribuciones (ubuntu 16.04), funciona en debian 9.

Escorpión
fuente