2011-01-01 31 views
25

Al hacer¿hay alguna manera de ver el contenido real de un enlace simbólico?

cat some-symlink-to-some-real-file 

que muestra el contenido del archivo real, no lo es en el propio enlace simbólico. ¿Hay alguna manera de ver lo que realmente hay en él?

+1

¿De qué lenguaje de programación querías hacer esto? –

+4

La llamada al sistema subyacente es 'readlink (2)'. Como se señala en una de las respuestas, el comando directo para usar es 'readlink (1)' en algunos sistemas (GNU y parientes). En otros sistemas - HP-UX, Solaris, AIX - el enfoque más cercano es probable que sea 'ls -l', pero tenga en cuenta los problemas si el nombre de la ruta en el enlace contiene líneas nuevas u otros caracteres extraños. –

Respuesta

31

El comando ls -l le mostrará que:

$ ls -l foo 
lrwxrwxrwx 1 user group 11 2010-12-31 19:49 foo -> /etc/passwd 

O el readlink command:

$ readlink foo 
/etc/passwd 

así, el enlace simbólico foo puntos al trazado /etc/passwd.

+15

Simplemente para aclarar esto, los "contenidos" del enlace simbólico no son más que el nombre que señala también. – wnoise

+1

@Ben: meh, shell es un lenguaje de programación en las manos adecuadas, por lo que la distinción no es del todo clara. – ijw

+1

@ijw: cierto eso. Sin embargo, no tenemos que fijar esa línea exactamente para descubrir que esto no está en el lado del programador. Además, estos ni siquiera son comandos de shell, 'ls' y' readlink' son aplicaciones separadas. –

1

Trate

find . -type l -exec ls -la {} \; 
+0

Este comando encontrará todos los enlaces que comienzan en el directorio actual. Básicamente, ls -l, se encarga de mostrar el contenido de cada uno. –

5

Puede llamar a la función readlink(2), que colocará el nombre vinculado en un búfer.

Tenga en cuenta que el resultado tiene una longitud (almacenada en el valor de retorno) en lugar de ser terminada en NUL. Entonces, si desea usarlo como una cadena, agregue un NUL usted mismo.

La mayoría de los lenguajes de scripts/alto nivel, como perl o python, proporcionarán un contenedor readlink que se convierte al tipo de cadena habitual apropiado para el idioma, por lo que no le molestarán detalles como la terminación NUL.

1

En cuanto a la página de manual http://man7.org/linux/man-pages/man7/symlink.7.html, el enlace simbólico es un archivo común (con un indicador especial) con la ruta al destino en su contenido. De modo que podría copiar el enlace simbólico a la partición FAT y leer allí el contenido.

Cuestiones relacionadas