Estoy tratando con proyectos java que a menudo resultan en carpetas profundamente anidadas (/ path / to / project / com / java / lang / lo que sea, etc.) y algunas veces quiero poder saltar, digamos, 4 niveles de directorio hacia arriba. Escribir cd ../../../ .. es un dolor, y no quiero un enlace simbólico. ¿Hay algún indicador en cd que te permita subir varios niveles de directorio (en mi opinión, sería algo como cd -u 4)? Desafortunadamente, no puedo encontrar ninguna página de manual para CD específicamente, en lugar de obtener la inútil página "incorporada".
linux
command-line
Tossrock
fuente
fuente
cd ...
donde el número de '.' Sería el número de niveles para subir. ¿Esto causaría un conflicto del cual no estoy enterado?Respuestas:
O ... prueba esto: (yay Google)
Ver Hack # 2
fuente
..
,...
y....
ya que son más rápidos de escribir, pero el principio de alias es el mismo, por supuesto.cd ...
,cd ....
Fue muy útil.Una función simple, con un alias, también:
(Podrías definir esto en
~/.bashrc
Si lo quieres en cada caso).Es fácil de usar:
fuente
eval $(printf "cd ..;%.s" $(seq $1))
cualcd
varias veces, porque~-
alias$OLDPWD
se establece en el directorio de trabajo desde antes de la invocación, en lugar de a un directorio intermedio. PD - se simplifica acd $(printf %.s../ $(seq "$1"))
si tu quieres.Una solución simple y de baja tecnología que no necesita ninguna configuración. Solo funciona en conchas con
bash
Edición de comandos de estilo, sin embargo.cd ..
fuente
Resulta que la respuesta correcta es 'cd + n', donde n es el número de niveles que desea subir. Lástima que esto no está documentado en ninguna parte!
fuente
dirs
que toma [+ n] como argumento, e imprime el enésimo directorio único que se agregó a través depushd
. Si tualias
cd
apushd
, entonces puedes usar esto. Sin embargo, tenga en cuenta que esto no es técnicamente una respuesta a la pregunta del OP, porque tiene que ver con único directorios, lo que significa que el orden se confunde con el tiempo, al regresar a los mismos directorios.pushd
ypopd
También tome una opción [+ n], por lo que es capaz de trabajar. Además, aunque es imperfecto e indirecto, supongo que esto puede usarse como respuesta a la pregunta. A menudo, visitó los directorios anteriores que recientemente, por lo que estarán en los últimos 10 directorios almacenados por la pila de directorios.Podría escribir una función (tiene que ser una función, ya que desea cambiar el estado de su propia shell, es decir, el directorio de trabajo; un comando externo solo afectaría su propio proceso).
Aquí hay una función que subirá varios niveles pasados como argumento (por defecto 1) en el físico estructura de directorios (asi, como
cd -P ..
, norte veces):Úsalo así:
fuente
up 4
realmente equivalente acd /some/dir/
asumiendo$PWD = "/some/dir/that/is/deeply/nested/"
?No es exactamente lo que estás pidiendo, pero debes mirar
pushd
ypopd
. Los encuentro mucho más útiles para la navegación de carpetas que algunoscd...
aliasSi va y viene de un par de áreas fijas, lo normal es tener alias.
fuente
En lugar de usar alias, también podría usar la siguiente función bash:
(o como una sola línea:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)Agregando esto a tu
~/.bashrc
El archivo estará disponible en su terminal y en la construcción de un String.../../../../../../
antes de llamarcd
También hará posible su uso.cd -
para volver al directorio de inicio.Una implementación más útil también podría contener algunas comprobaciones de entrada de usuario:
fuente
Sabes acerca de autojump ? Es un hack de terceros, pero puede ser útil en su escenario.
fuente
Prueba el parámetro de entorno raramente usado
CDPATH
. Entonces puede que no tengas que establecer explícitamente el nivel.Ejemplo:
Si está trabajando en varios proyectos, puede hacer la configuración de CDPATH en un archivo de entorno específico del proyecto. Y dispáralo con una cuña para automatización adicional.
Tiendo a usar pushd y popd bastante. Tiendo a usar CDPATH para dejarme saltar entre los árboles del proyecto en lugar de los subdirecciones en un proyecto, pero en este momento estoy trabajando en muchos proyectos pequeños, no en algunos proyectos grandes. :)
fuente
Si está anteriormente en el directorio de destino:
fuente
Echa un vistazo a DirB . Es un script BASH que te permite crear marcadores de la siguiente manera:
Las operaciones
Muy simple, muy eficaz.
fuente
Paso más allá de la respuesta de @Grigory:
Es decir :
fuente