Вопрос

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

Мне нужно для всех следующих OS HP-UX 11I, 1123U, 1123i AIX 5.2 и 5.3 SUSE Linux 10 Solaris 10

Это было полезно?

Решение

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

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

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

Другие советы

Если вы ищете системный вызов, вам нужно 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';

Если вы ищете утилиту командной строки, похоже, она не стандартизирована, но ГНУ (Линукс) и БСД как есть readlink(1).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top