Link simbólico de desreferencia no OS X?

4

No OS X, como posso desreferenciar um link simbólico para um nome de arquivo canônico? (ou seja, um começando com / .)

Ou seja, eu estou atrás do equivalente da opção -f do readlink do GNU:

kapow:~$ greadlink -f .bash_profile
/Users/mjs/.config/home/.bash_profile

O readlink do OS X retorna um link relativo:

kapow:~$ readlink .bash_profile
.config/home/.bash_profile

stat(1) tem um incrível número de opções, mas não consegui descobrir a combinação certa para fazer o que eu quero.

    
por ithinkihaveacat 28.11.2012 / 00:10

1 resposta

3

A solução mais simples é testar o valor de retorno e preceder pwd se você achar que o readlink retornou um caminho relativo em vez de um caminho absoluto armazenado no link. Qualquer coisa que não comece com / é simples de testar com uma variedade de ferramentas unix.

Não sei se essa foi uma decisão de design consciente, já que o OS X prefere aliases do sistema de arquivos que rastreiam o ID único de um arquivo, bem como o caminho ou é apenas uma omissão / diferença realizada pelo BSD. O que está claro é que não há nenhuma opção para sintetizar o caminho completo do arquivo vinculado usando a versão OS X do readlink.

Aqui estão algumas soluções prontas para implementar read link -f no OS X de outro site ...

Se você é fã de ferramentas GNU, você vai querer ter o homebrew e instalar o pacote coreutils - você pode em seguida, alias greadlink para readlink e continue com uma quantidade mínima de problemas.

    
por 05.12.2012 / 16:37