Pregunta

¿Es posible obtener la ruta abolute del enlace que apunte a? ¿Hay alguna simple comando de sistema?

Necesito para todos los siguientes sistemas operativos HP-UX 11i, 1123u, 1123i AIX 5.2 y 5.3 Suse Linux 10 Solaris 10

¿Fue útil?

Solución

No se ha especificado un idioma, así que supongamos que desea un comando que se puede ejecutar en cualquier shell que esté utilizando. El ls comando tiene la -l (que es una ele) opción que imprime una gran cantidad de información sobre el archivo. El último bit de información es la ruta completa, por lo que debe ser capaz de decir

ls -l file | awk '{print $NF}'

en cualquier máquina compatible SUS2 (que debe ser todos los UNIXes comerciales). Esto tendrá un problema si el archivo o el cualquiera de los directorios que conducen al archivo tienen espacios sin embargo.

Otros consejos

Si usted está buscando una llamada al sistema, que desea readlink(2) . Esta es estándar, y por lo tanto debe estar disponible en todos los sistemas compatibles con POSIX.

Este es un ejemplo de su uso, tomada desde el enlace dado anteriormente:

#include <unistd.h>

char buf[1024];
ssizet_t len;

if ((len = readlink("/modules/pass1", buf, sizeof(buf)-1)) != -1)
    buf[len] = '\0';

Si usted está buscando una utilidad de línea de comandos, no se ve como hay un estándar, pero GNU (Linux) y BSD ambos tienen readlink(1).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top