¿Cómo puedo cambiar al directorio anterior en lugar de subir?

¿Cómo puedo cambiar al directorio anterior en lugar de subir?

Actualmente paso gran parte de mis horas de trabajo yendo y viniendo entre dos caminos que están muy abajo en el árbol y se desvían entre sí en la raíz. Me parece que mi vida sería mucho más fácil si hubiera un argumento que cdllevara al usuario al último directorio en el que se encontraba.

Es decir, si estoy en:

/etc/foo/bar/baz/moo

y luego escribe:

cd /var/lib/fubarred_app/blargh/logs

Me gustaría poder volver al primer directorio sin tener que volver a escribir la ruta completa.

La clave de memoria no es suficiente, ya que uso suficientes comandos en cada lugar, por lo que es tan difícil regresar y encontrar el camino que quiero como escribirlo yo mismo.

¿Existe algún comando corto que me permita ir al directorio anterior?

Respuesta1

El comando

cd -

realizará el intercambio que necesita en la mayoría de los shells principales, la variante más antigua y más larga es

cd "$OLDPWD"

que utilizará la variable de entorno que contiene el directorio de trabajo anterior.


ElPágina de manual de POSIX paracdmenciona:

DESCRIPCIÓN

Si, durante la ejecución de los pasos anteriores, se cambia la variable de entorno PWD, la variable de entorno OLDPWD también se cambiará al valor del directorio de trabajo anterior (es decir, el directorio de trabajo actual inmediatamente antes de la llamada a cd).

OPERANDOS

  -  Cuando se utiliza un guión como operando, éste será equivalente al comando:

cd "$OLDPWD" && pwd 

que cambia al directorio de trabajo anterior y luego escribe su nombre.

Respuesta2

Además de la respuesta de Bryan, vale la pena mencionar que también existen pushdy popd, que crean directorios como una pila. Esto también está disponible en Windows NT; sin embargo, no está disponible en todos los shells.

Por ejemplo, podemos ir a tres directorios diferentes y siempre verás tu pila cuando llames pushd:

charon:~ werner$ pushd Documents/
~/Documents ~

charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~

charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~

Y cuando llamas popdtres veces seguidas, accedes a esos directorios en la pila en orden inverso. Al mismo tiempo, se volverá a vaciar la pila.

charon:Downloads werner$ popd
~/Movies ~/Documents ~

charon:Movies werner$ popd
~/Documents ~

charon:Documents werner$ popd
~

charon:~ werner$ popd
-bash: popd: directory stack empty

Si está utilizando Zsh; tiene una opción AUTO_PUSHD, que automáticamente empujará cd's a la pila.

Respuesta3

Hay algunos programas de "salto"

  • salto automático(mantenido con características básicas)
  • j2 (aparentemente sin mantenimiento con algunas características avanzadas)
  • z(versión mantenida de "j" con funciones avanzadas)

Estos facilitan cualquier tipo de navegación por directorios. Lo usas dando una parte del camino y simplemente funciona.

En tu caso

~$ j baz 
/etc/foo/bar/baz/moo$

~$ j bla 
/var/lib/fubarred_app/blargh/logs$

Puedes asignar cualquier letra que quieras a estos programas, la "j" es tradición :)

j2 y z admiten múltiples términos de búsqueda,...

~$ j baz src
/home/me/projects/baz/repository/trunk/src$

...y más opciones.

~$ j -l  # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank

Respuesta4

Además de cd -ycd $OLDPWD

Puede utilizar la búsqueda del historial presionando CTRL-Ry escribiendo algunas letras del cdcomando que ingresó antes. Al presionar CTRL-Rrepetidamente aparecerán coincidencias más antiguas.

Este método será más útil si tiene más de dos rutas para cambiar.

información relacionada