Me encuentro con la necesidad de saltar algunos directorios en mi carpeta de inicio a menudo y me canso de escribirlos. Me gustaría un enfoque más rápido, que tradicionalmente sería un enlace simbólico.
Sin embargo, no quiero saturar mi directorio de inicio con docenas de enlaces simbólicos. Podría crear un poco de ~/links/directorio y el desorden que con los enlaces simbólicos, pero todavía es feo. Además, es posible que desee crear enlaces simbólicos que cambien cada día (definido en .bashrc) para saltar al directorio de días actuales.
¿Hay alguna manera de alias de manera efectiva un enlace simbólico, creando algo que será reconocido como un enlace para una navegación rápida, pero que en realidad no aparecerá cuando haga uno lsde mi directorio de inicio, y no durará más allá de la sesión actual?
fuente

cd -willcden el último directorio anterior. Por lo tanto, si lo hace dos veces, volverá a donde comenzó ... muy agradable para la situación "oh, olvidé editar someFile.txt en la ubicación anterior" => Simplemente:cd -edite someFile.txtcd -Respuestas:
Podrías usar tabulación completa. De manera predeterminada en muchas distribuciones de Linux, bash está configurado para que cuando presione la tecla [TAB], se le dé una lista de posibles coincidencias, o si solo hay una coincidencia, se completará. Para cd, normalmente es una lista de subdirectorios del directorio de trabajo actual. Podrías sobrescribir eso, pero te sugiero que hagas un alias, como
jd"jump directory":y luego, definiendo los "marcadores" que desea como finalizaciones para jd. Mire la página de manual de bash para ver muchas más opciones (incluida la generación automática de los resultados sobre la marcha desde un comando o función), pero la forma más fácil es solo una lista de palabras, con
-W:complete -W "/ srv / www ~ / tmp ~ / work" jd
Ahora, escriba
jdy presione [TAB], y verá sus "marcadores". Escriba cualquier parte ambigua y luego presione [TAB] para completar. (En lo anterior, la~s se expande a mi directorio de inicio, por lo que la primera [TAB] me da un/, y si presionowy [TAB] nuevamente,/srv/wwwse completa.)Por supuesto, pon esto
~/.bash_profilepara que persista.O podemos llevar esto al siguiente nivel. Haga un directorio
~/.shortcuts, comenzando con un punto, estará oculto y no desordenará su directorio de inicio limpio y agradable, y llénelo con enlaces simbólicos a sus directorios deseados. Luego, pon esto en tu ~ / .bash_profile:Esto define una finalización un poco más complicada en la función
_list_shortcutspara construir la lista de nombres, y hace quejdsea una función en lugar de un simple alias, ya que queremos que actúe de manera diferente a solocd. La-Pbanderacdhace que resuelva los enlaces simbólicos, por lo que todo se vuelve magia transparente. Sus nombres de acceso directo ni siquiera tienen que coincidir con los objetivos.Entonces:
Y, para una dosis extra de fantasía, haga una
jdlista de todos sus atajos cuando se ejecute sin ningún parámetro:Nota: uso en
compgen -W $( cmd )lugar decompgen -C 'cmd'porque este último nunca funciona para mí y no entiendo por qué. Esa podría ser una nueva pregunta mía. :)fuente
Los alias de Shell tienen la característica de que puede completar (algunos) nombres (generalmente vinculados tab). Alternativamente, puede usar la
CDPATHfunción, que "recientemente" (en los últimos 5-6 años) se ha mejorado para admitir la finalización del nombre. Si eso funciona para usted, tiene la ventaja de que lo que escribe es el nombre real del directorio en lugar de un mnemotécnico para él.De acuerdo con el manual de bash
Otras lecturas:
fuente
CDPATHvariable de entorno, gracias. Podría agregar migit_reposdirectorio a esa variable ...Para los directorios que frecuenta con frecuencia, pero que no cambia diariamente, otra opción es tener varios
aliascomandos en su.bashrcarchivo:Un amigo tiene alrededor de 50 de esos; Tengo un puñado Rapido y Facil. Sólo
cambiar el directorio a / u01 / app / oracle
fuente
Recomiendo
pushdypopd.Personalmente, los encuentro útiles cuando hago trabajo de desarrollo / leo el código fuente, cuando hay varios directorios involucrados.
Implementan efectivamente una estructura de pila / LIFO, donde EMPUJA un directorio (
pushd), y el siguiente comando de directorio POP (popd) lo recupera.Entonces, cuando está dentro de un directorio, haría:
Y cuando necesitas recuperarlo, lo haces
Puedes realizar múltiples
pushd, y hacer las correspondientespopdmás tarde, para volver a los directorios.Dejaré aquí un enlace.
http://www.eriwen.com/bash/pushd-and-popd/
fuente
popdmucho. Completo midirslista (que se completa conpushdcomandos) con todos los directorios que quiero visitar / trabajar durante ese tiempo, luego ejecutopushd +1. Entonces, puedo recorrer los directorios con un simple!puque es muy rápido. (Tenga en cuenta que tanto en Ubuntu como en CentOS,pushdes el único comando disponible en una instalación limpia que comienza conpu).Podrías simplemente ponerlos como variables en tu
~/.bashrc, y luego están a un paso de$distancia.fuente
La respuesta obvia son las variables , esas cosas simbólicas en el shell que representan otras cosas, de manera similar a los enlaces simbólicos en el sistema de archivos.
En cualquier shell decente, se Tabcompletan los nombres de las variables, lo que ayuda aún más.
fuente