Получить путь ссылки, на которую он указывает? - PullRequest
2 голосов
/ 10 апреля 2009

Можно ли получить полный путь ссылки, на которую он указывает? Есть ли простая системная команда?

Мне нужно для всех следующих ОС HP-UX 11i, 1123u, 1123i AIX 5.2 и 5.3 Suse Linux 10 Солярис 10

Ответы [ 2 ]

5 голосов
/ 10 апреля 2009

Вы не указали язык, поэтому я предполагаю, что вам нужна команда, которую можно запускать в любой оболочке, которую вы используете. Команда ls имеет параметр -l (то есть ell), который выводит много информации о файле. Последний бит информации - это полный путь, поэтому вы должны сказать:

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

на любом SUS2-совместимом компьютере (который должен быть всеми коммерческими UNIX). Это будет иметь проблему, если в файле или в любом из каталогов, ведущих к файлу, есть пробелы.

2 голосов
/ 10 апреля 2009

Если вы ищете системный вызов, вы хотите readlink(2). Это стандартизировано и должно быть доступно во всех POSIX-совместимых системах.

Вот пример его использования, взятый по приведенной ранее ссылке:

#include <unistd.h>

char buf[1024];
ssizet_t len;

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

Если вам нужна утилита командной строки, она не похожа на стандартизированную, но GNU (Linux) и BSD имеют readlink(1).

...