2010-11-15 11 views
15

Haciendo un script bash, y estoy tratando de encontrar una manera de descubrir a qué apunta mi enlace simbólico. En este momento, lo estoy haciendo con esto, pero esto solo funciona si mi enlace simbólico está en el directorio actual. ¿Hay alguna manera de averiguar a qué apunta mi enlace simbólico si está en otro directorio?¿Cómo puedo saber a qué apunta mi enlace simbólico?

ls -l "symlink" | cut -d'>' -f2 

Respuesta

23

Si usted tiene la utilidad readlink(1) (parte de GNU coreutils), que hace lo que quiere. De lo contrario, estás en un arroyo, no conozco ningún equivalente portátil & sencillo.

6

En una cadena de herramientas BSD, que estoy haciendo:

stat -f %Y <filename> 

Por ejemplo:

% ln -sf /bsd ~/blah   
% stat -f %Y ~/blah 
/bsd 

En un GNU cadena de herramientas que no es tan fácil, se puede usar algo como:

$ stat -c %N /usr/bin/firefox 
`/usr/bin/firefox' -> `../lib/firefox-3.6.12/firefox.sh' 

Luego, usa awk/cut y sed para extraer y eliminar citas basura.

O una solución más complicada es usar ls -al y awk/cut para extraer la columna que necesita.

Cuestiones relacionadas