¿Puedo acortar la escritura necesaria para 'cd' en algunos directorios bien conocidos?

10

Me encuentro abriendo una terminal y luego grabando mucho en el mismo directorio cuya ruta es muy larga.

Esto significa que estoy enviando mucho cd'ing y usando la pestaña para acelerar mucho las cosas.

Sería genial si pudiera tener algún tipo de enlace a este directorio y luego cd a eso para estar rápidamente en el directorio anidado profundo.

¿Es esto posible?

    
pregunta Breako Breako 26.07.2013 - 21:32

10 respuestas

23

Esta es la manera de tratar con frecuencia las rutas complejas a cd .

mkdir ~/Links
ln -s /complexpath/there ~/Links

esto creará el enlace simbólico

~/Links/there

Para usar este nuevo directorio Links de manera eficiente, si su shell de inicio de sesión es bash simplemente incluya este comando en su ~/.profile (que es usado por todos los shells de estilo Bourne bash , ksh , zsh …):

CDPATH=~/Links:.
export CDPATH

Esto significa que por cada cd , su shell buscará dentro de 2 directorios para encontrar un nombre de ruta local:

~/Links
.

No necesitará reiniciar su sesión para probarlo, simplemente ejecute:

. ~/.profile

que significa simplemente leer mi ~/.profile . (No tendrá que ponerlo en su ~/.bashrc ya que no es necesario repetir la misma inicialización de variable cuando no la cambie).

Una vez que lo hayas probado, podrás reiniciar tu sesión;).

De ahora en adelante, cada vez que quieras ir a there tendrás que escribir:

cd there
    
respondido por el daniel Azuelos 26.07.2013 - 23:11
11

Definir un alias es una forma muy fácil de tener una abreviatura corta para un comando más largo. Una vez que tenga sus alias correctos, puede crear una sección en su archivo .bashrc (u otro archivo de inicio) para no tener que volver a escribir estos alias para cada nuevo shell que inicie:

en .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem [email protected]'

etc.

Cierre la sesión y vuelva a iniciarla (o simplemente ejecute . ~/.bashrc ) y ahora solo puede escribir httpdlog y ejecuta el cd. O ws4 y realmente ejecuta el comando ssh, etc.

Esto elimina la necesidad de crear (una gran cantidad de) enlaces vacíos que harán que su directorio personal también se vea como un desastre.

    
respondido por el Dromendokter 26.07.2013 - 23:00
9

Intente usar autojump o z .

Después de instalar cualquiera de los dos, simplemente cd alrededor como de costumbre, aprenden los directorios más visitados y le permiten acceder a ellos escribiendo solo una parte de la ruta:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Prefiero z de los dos.

    
respondido por el Tyilo 29.07.2013 - 20:36
6

Recomiendo encarecidamente fasd que es similar a autojump and z pero mejor IMHO. Desde el sitio web:

  

Fasd (pronunciado similar a "fast") es un impulsor de productividad de línea de comandos. Fasd ofrece acceso rápido a archivos y directorios para shells POSIX. Está inspirado en herramientas como autojump, z y v. Fasd realiza un seguimiento de los archivos y directorios a los que ha accedido, para que pueda consultarlos rápidamente en la línea de comandos.

     

El nombre fasd proviene de los alias sugeridos predeterminados f (archivos), a (archivos / directorios), s (mostrar / buscar / seleccionar), d (directorios).

     

Fasd clasifica los archivos y directorios por "frecency", es decir, por "frecuencia" y "recency". El término "frecency" fue acuñado por primera vez por Mozilla y utilizado en Firefox (enlace).

    
respondido por el Chauncey Garrett 30.07.2013 - 23:34
4

Alternativamente, puedes crear un alias. Lance lo siguiente en algo como .bashrc o .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Luego, asegúrate de que el archivo en el que se encuentre sea source d. Mis alias están en .bashrc, que fuente con esta línea en .bash_profile: source ~/.bashrc

    
respondido por el Amory 26.07.2013 - 23:04
1

Claro: crear un enlace simbólico

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut
    
respondido por el dstarh 26.07.2013 - 21:35
1

Me gusta usar bashmarks para crear fácilmente "marcadores a directorios" sobre la marcha.

Ver el archivo léame en: enlace

Nota: necesitarás tener instalado git para seguir el proceso de instalación en tres pasos de bashmark: enlace

¡Buena suerte!

    
respondido por el Kye Hittle 30.07.2013 - 21:02
1

Alternativamente, también puedes intentar instalar el shell de peces.

enlace

Esto tiene una excelente predicción para los comandos. También le permite de forma inteligente escribir mayúsculas y minúsculas sin ningún problema.

La desventaja de fish es que tiene su propio lenguaje de scripting y no son compatibles con bash.

    
respondido por el kumar0us 03.08.2013 - 08:42
1

Todo lo que hago es escribir "cd" y luego arrastrar la carpeta desde el Finder a la Terminal que pega en la ruta completa. Quizás no sea tan elegante, pero ¿funciona para todas las carpetas frente a algunos accesos directos pre-guardados?

    
respondido por el Ewan Makepeace 14.08.2013 - 02:40
1

La adición de enlaces simbólicos de conveniencia está bien para un directorio especial o dos, pero muy rápidamente es muy difícil de administrar. Una solución mucho mejor es utilizar la variable de entorno CDPATH , disponible en bash y otros shells solo para este propósito.

CDPATH es una lista separada por dos puntos (como PATH ) de lugares para buscar un nombre de directorio. Puede contener tanto rutas de acceso absolutas como relativas. Tengo el mío ajustado a algo como export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>" .

Con esta configuración, puedo escribir cd pdftools desde cualquier lugar y me llevará a ~/projects/pdftools . (Con un enlace simbólico, tendría que escribir cd ~/pdftools si no estuviera en mi directorio HOME.) También puedo hacer un acceso directo a los subdirectorios: cd pdftools/bin .

El .. en mi CDPATH me permite escribir cd sisterdir en lugar de cd ../sisterdir , etc. Como puede esperar, cuando creo nuevos directorios en cualquier lugar en CDPATH , se encontrarán automáticamente con cd : no es necesario crear nuevos enlaces simbólicos o alias.

Esta función se vuelve aún más agradable si utiliza el archivo bash_completion distribuido, por ejemplo, con los sistemas Debian. No vino con mi caja de OS X, así que busqué una copia y funciona bien. (Consíguelo con brew , o simplemente descárguelo manualmente desde aquí .) Este archivo define mejoras en la finalización de la línea de comandos, para que pueda escribir cd pdf<TAB> y el directorio pdftools se encuentra y se expande desde en cualquier lugar en CDPATH .

    
respondido por el alexis 13.05.2016 - 13:43

Lea otras preguntas en las etiquetas