Como obter o caminho completo para o destino do link

9

Se eu tiver um link simbólico /var/opt/foo criado com ln -fs /path/to/target/dir foo . Como posso, em um script, ver apenas o link obter /path/to/target/dir ?

O que eu quero alcançar no script é rm -rf /path/to/target/dir antes de eu ln -fs /path/to/another/dir foo .

    
por Nifle 31.08.2011 / 11:57

2 respostas

24
link=/var/opt/foo

target=$(readlink "$link")

$target agora é o destino do link, exatamente como foi armazenado no sistema de arquivos.

Os links simbólicos podem ser relativos, portanto, isso seria melhor para o uso normal:

target=$(readlink -f "$link")

Observe que isso usa readlink do GNU Coreutils, que pode não existir no BSD e em outros sistemas.

Editar: readlink -f funciona em BSDs, desde que o destino do link exista. realpath é outra ferramenta somente BSD que funciona de maneira semelhante.

    
por 31.08.2011 / 12:36
0

Uma maneira é (estou esperando por uma versão melhor)

olddir=$(pwd)
cd /var/opt/foo
deleteme=$(pwd)
cd $olddir
rm -rf "$olddir"
    
por 31.08.2011 / 12:00