abra un file usando CDPATH y symlink

Para moverse rápidamente, agregué una ruta a CDPATH que contiene enlaces simbólicos a diferentes ubicaciones. Hice esto agregando la siguiente línea a .bashrc:

export CDPATH=~/symlinks 

Cuando trabajo con directorys, todo está bien y puedo acceder a las carpetas enlazadas desde cualquier lugar.

Por ejemplo si lo hago:

 $ ln -s ~/path/to/folder ~/symlinks/folder 

Entonces puedo escribir:

 $ cd folder 

para ingresar a la carpeta de enlaces simbólicos, independientemente de mi directory actual.

Sin embargo, cuando creo un enlace simbólico a un file y luego trato de abrirlo con un editor, obtengo un file vacío, a less que esté en el directory de enlace simbólico.

Por ejemplo si lo hago:

 $ ln -s ~/path/to/file/filename ~/symlinks/filename 

y luego escribe:

 $ kwrite filename 

Obtengo un file vacío, si no estoy en la carpeta de enlace simbólico.

Sin embargo, quiero acceder al file desde cualquier lugar, ¿cómo puedo lograrlo?

Solutions Collecting From Web of "abra un file usando CDPATH y symlink"

La respuesta simple es que no puedes.

Lo que hace CDPATH es que si escribe "carpeta de cd", primero comtesting si existe "carpeta" dentro de su CDPATH; de lo contrario, se comprobará en la carpeta en la que se encuentra actualmente. Pero esto es específico para los cambios de directory; kwrite no comtesting CDPATH y AFAIK no hay opción de configuration para que se vea en un directory específico.

Lo que podrías hacer es crear un pequeño script de shell que reemplace a kwrite, así:

 #!/bin/sh FILE=$1 if [ -f "$HOME/symlinks/$FILE" ] then kwrite "HOME/symlinks/$FILE" else kwrite "$FILE" fi 

Luego ejecute el script (que puede nombrar, por ejemplo, "akwrite") en lugar de ejecutar kwrite directamente.

No puedes.

Lo que puede hacer es definir accesos directos como variables de shell.

 fn=~/path/to/file/filename kwrite $fn 

En zsh, puede evitar conflictos de nombres con variables de shell usando hash de directory en su lugar. Estos son alias para nombres de file que se expanden después de ~ (como nombres de usuario). A pesar de sus nombres, estos alias no tienen que apuntar a un directory, se pueden expandir a text arbitrario.

 hash -d fn=~/path/to/file/filename kwrite ~fn