Rota de rastreamento de um link simbólico

1

Eu quero resolver um link simbólico com a opção adicional para imprimir o link inteiro. Por exemplo, quero executar um comando como readlink -f "symlink2" , que informa cada entrada da ligação. Em outras palavras, se você resolver o link simbólico "symlink2- > symlink1- > / caminho / arquivo" então o resultado do comando acima é "/ caminho / arquivo" e eu estou lokking para uma saída como:

$readlink -f "symlink2
symlink1
/path/file
    
por Hölderlin 27.12.2016 / 22:13

2 respostas

2

Uma maneira de fazer isso é criar sua própria% recursivareadlink.

function readlinkWithPrint() {
    link='readlink "$@"'
    [ -e "$link" ] && echo "$link"
    [ -h "$link" ] && readlinkWithPrint "$link"
}

Aqui está um teste:

$ touch file
$ ln -s file symlink1
$ ln -s symlink1 symlink2
$ readlinkWithPrint symlink2
symlink1
file

Infelizmente, essa função é bem básica; as opções fornecidas para frist readlink não serão propagadas para o restante, além de você não poder ler vários arquivos.

    
por 27.12.2016 / 23:07
1

Acho que você está procurando namei , que é parte do o pacote util-linux, disponível em todos os sistemas Linux não embarcados.

Veja este tópico sobre um equivalente para macOS. O código-fonte deve ser principalmente portável se você precisar em outra variante do Unix.

    
por 29.12.2016 / 00:14