Obter o caminho do link que aponta para?
Pergunta
É possível obter o caminho abolute do link que ele está apontando para? Existe algum comando simples sistema?
Eu preciso de todos os seguintes OS HP-UX 11i, 1123u, 1123i AIX 5.2 e 5.3 Suse Linux 10 Solaris 10
Solução
Você não especificou uma linguagem, então eu suponho que você quer um comando que pode ser executado em qualquer shell que você está usando. O href="http://opengroup.org/onlinepubs/007908799/xcu/ls.html" rel="noreferrer"> ls
comando tem a -l
(que é um ell) opção que imprime uma monte de informações sobre o arquivo. O último bit de informação é o caminho completo, por isso você deve ser capaz de dizer
ls -l file | awk '{print $NF}'
qualquer máquina compatível em sus2 (que deve ser de todos os UNIXes comerciais). Isto terá um problema se o arquivo ou a qualquer um dos diretórios que antecederam o arquivo ter espaços embora.
Outras dicas
Se você estiver procurando por uma chamada de sistema, você quer readlink(2)
. Esta é padronizado, e por isso deve estar disponível em todos os sistemas compatíveis com POSIX.
Aqui está um exemplo de seu uso, tomada a partir do link dado anteriormente:
#include <unistd.h>
char buf[1024];
ssizet_t len;
if ((len = readlink("/modules/pass1", buf, sizeof(buf)-1)) != -1)
buf[len] = '\0';
Se você está procurando um utilitário de linha de comando, ele não se parece há uma padronizado, mas GNU (Linux) e BSD ambos têm readlink(1)
.