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 ls
de mi directorio de inicio, y no durará más allá de la sesión actual?
fuente
cd -
willcd
en 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
jd
y 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 presionow
y [TAB] nuevamente,/srv/www
se completa.)Por supuesto, pon esto
~/.bash_profile
para 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_shortcuts
para construir la lista de nombres, y hace quejd
sea una función en lugar de un simple alias, ya que queremos que actúe de manera diferente a solocd
. La-P
banderacd
hace 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
jd
lista 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
CDPATH
funció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
CDPATH
variable de entorno, gracias. Podría agregar migit_repos
directorio a esa variable ...Para los directorios que frecuenta con frecuencia, pero que no cambia diariamente, otra opción es tener varios
alias
comandos en su.bashrc
archivo: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
pushd
ypopd
.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 correspondientespopd
más tarde, para volver a los directorios.Dejaré aquí un enlace.
http://www.eriwen.com/bash/pushd-and-popd/
fuente
popd
mucho. Completo midirs
lista (que se completa conpushd
comandos) con todos los directorios que quiero visitar / trabajar durante ese tiempo, luego ejecutopushd +1
. Entonces, puedo recorrer los directorios con un simple!pu
que es muy rápido. (Tenga en cuenta que tanto en Ubuntu como en CentOS,pushd
es 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