Linux cd .. comando

9

Di si necesito hacer esto mucho:

cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/

¿Hay alguna forma más rápida de no siempre escribir ../../../../tantas veces? ¿Alguna idea creativa?

Stan
fuente
2
¿Por qué no simplemente ejecutar cd ../../../..y terminar con esto?
Red Cricket
8
Puede disfrutar pushdy popdhasta cd -.
jscott
1
Si va tan atrás, podría tener sentido simplemente cd / actual / ruta / usted / lo que quiera, según la profundidad de las carpetas.
Drew Khoury
Esto es mucho más esfuerzo de lo que vale. Si se está moviendo entre directorios, la especificación de ruta completa o simplemente usando cd -( para ir al último directorio ) es más fácil. Normalmente, alias h="history|grep"para poder usar los atajos de entrada del historial en su lugar. Algo así h foo3, seguido de !450repetir ese comando.
ewwhite
Abra otra ventana de terminal y no escriba cd ../../../ .. en absoluto
Matt

Respuestas:

18

La forma clásica de hacer esto es establecer la CDPATHvariable. En su caso, podría establecerse en .:../../../../o .:/path/to/the/parent/of/foopara lograr el efecto deseado. Entonces puedes simplemente hacer cd foo/sub1/bar/desty llegar a donde quieras.

La ventaja de esto es que la finalización de la pestaña cdtambién se ve $CDPATHy funcionará mágicamente.

Dennis Kaarsemaker
fuente
9

Puede usar el salto automático que aprende automáticamente del comando cd anterior y solo necesita especificar una cadena única de la ruta completa la próxima vez. ex. j foo` j foo1` j foo2

pragnesh
fuente
7

Puede crear accesos directos para estos comandos agregando alias en el archivo de configuración bash (~ / .bashrc o /etc/bash.bashrc)

alias cdd="cd ../../../../"

Luego, cuando escriba cdd, ejecutará ese comando.

Jason
fuente
3
Sí, o function cdd () { cd ../../../../$1/bar/dest ; }, por lo que a continuación, puedes escribir por ejemplo cdd foo, cdd foo2.
Andrew Schulman
0

Recientemente me encontré con https://github.com/rupa/z , que te permite saltar a un directorio utilizado recientemente por regex. Entonces podrías hacer algo como:

z foo3.*dest

en vez de:

cd ../../../../foo3/sub1/bar/dest/

(siempre que haya visitado ese directorio anteriormente, y nada más reciente / utilizado con frecuencia coincide con la expresión regular)

rjmunro
fuente