Como ver o final de uma longa cadeia de links simbólicos

6

Suponha que eu tenha um link que aponte para outro link que aponte para outro link, etc., abaixo da linha. Não tenho certeza de quantos níveis de links existem. Qual é o caminho da linha de comando para ver o alvo final de todos esses links?

    
por pythonic metaphor 20.10.2010 / 20:28

5 respostas

7

Algumas versões de readlink suportam a opção -f para acompanhar a cadeia até o final. O que está na minha caixa Debian faz. O que está na minha caixa do Mac OS não (mas, então, ele é substituído por um fornecido pelo fink).

    
por 20.10.2010 / 21:21
4

Talvez não seja a melhor solução, depende das suas necessidades. Você pode recuperar o inode do final da cadeia com:

stat -Lc '%i' the-link

e se você precisar do caminho desses arquivos (mais de um se as extremidades da cadeia estiverem ligadas entre si):

find /search/path/ 'stat -Lc '%i' the-link'

Ok, há uma solução mais inteligente:

readlink -f the-file
    
por 20.10.2010 / 21:07
1

Veja minhas respostas aqui e aqui para pequenas funções que você pode usar como pontos de partida para realizar o que você quer se você quiser ver todos os links intermediários.

    
por 20.10.2010 / 21:22
0

Dê uma olhada neste script perl, acho que é o que você está procurando.

ftp://ftp.cs.duke.edu/pub/yuji/tools /reslink/reslink.pl

    
por 20.10.2010 / 20:54
0

Se você deseja mais uma solução multiplataforma, use:

#!/usr/bin/env bash
s=/path/to/file
while [ -h $s ]; do s="$(readlink "$s")"; done
echo $s

Parece deselegante, mas, como afirma o dmckee, o Mac OS X não tem a opção -f em readlink .

    
por 27.03.2014 / 13:04