Ir al directorio del destino del archivo de enlace simbólico

Ir al directorio del destino del archivo de enlace simbólico

¿Cómo puedo crear un comando (o alias) para ir al directorio que contiene el archivo de destino de un enlace simbólico? Por ejemplo, si tengo un enlace simbólico

symFile@ -> /Users/zhermes/some/dir/someFile

Me gustaría poder correr <command> symFiley tenerlo cdconmigo./Users/zhermes/some/dir/

Respuesta1

La siguiente función comprueba si el enlace simbólico existe y cdva a su directorio principal. Por supuesto, también funciona con archivos normales. Podría ser más inteligente con errores de readlinko cd, pero es un comienzo.

GNU/Linux:

En GNU/Linux, puedes usar readlink -f:

cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink -f "$1")")" || echo "No such file: $1" }

BSD/OS X:

Lo siguiente debería funcionar en Unix/OS X, donde no hay -fopción para readlink. Por supuesto, esto significa que no seguirá enlaces simbólicos anidados.

cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink "$1")")" || echo "No such file: $1" }

En OS X, puede instalar coreutilsconcerveza caseray utilizar greadlink -fen su lugar.

información relacionada