
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 cd
llevara 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 paracd
menciona:
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 pushd
y 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 popd
tres 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-R
y escribiendo algunas letras del cd
comando que ingresó antes. Al presionar CTRL-R
repetidamente aparecerán coincidencias más antiguas.
Este método será más útil si tiene más de dos rutas para cambiar.