Como faço para exibir informações sobre todos os links simbólicos encontrados em um determinado caminho?

1

Como faço para obter uma descrição de todos os links simbólicos encontrados para o caminho fornecido?

Esperando saída como esta:

$ linksinfo ~/.nix-profile/lib/libQt5OpenGL.so
/home is a directory
/home/nix is a directory
/home/nix/.nix-profile -> /home/nix/.nix-profile -> /nix/var/nix/profiles/default
/nix/var/nix/profiles/default/lib is a directory
/nix/var/nix/profiles/default/lib/libQt5OpenGL.so -> /nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1/lib/libQt5OpenGL.so
/nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1/lib/libQt5OpenGL.so -> libQt5OpenGL.so.5.3.1
/nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1/lib/libQt5OpenGL.so.5.3.1 is a file
    
por Vi. 01.10.2014 / 00:19

1 resposta

1

Permite criar scripts simples:

#!/bin/bash            

mypath=$1
while [[ "${#mypath}" -gt 1 ]]; do
      file "$mypath"
      mypath="$(dirname $mypath)"
done

Teste:

$ ./linksinfo /usr/src/linux/kernel/../../../../bin/sh
/usr/src/linux/kernel/../../../../bin/sh: symbolic link to 'bash'
/usr/src/linux/kernel/../../../../bin: directory
/usr/src/linux/kernel/../../../..: directory
/usr/src/linux/kernel/../../..: directory
/usr/src/linux/kernel/../..: directory
/usr/src/linux/kernel/..: directory
/usr/src/linux/kernel: directory
/usr/src/linux: symbolic link to 'linux-3.14.14-gentoo'
/usr/src: directory
/usr: directory

Editar

Isso não verifica / mostra todos os componentes do caminho, mas a saída em sua pergunta também não faz isso. Por exemplo, depois de

/home/nix/.nix-profile -> /nix/var/nix/profiles/default

é possível que qualquer% de /nix , /nix/var/ , /nix/var/nix , /nix/var/nix/profiles ou /nix/var/nix/profiles/default seja um link. No entanto, sua saída pula isso e verifica apenas /nix/var/nix/profiles/default/lib . Coisa semelhante acontece com

/nix/var/nix/profiles/default/lib/libQt5OpenGL.so -> /nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1/lib/libQt5OpenGL.so

Novamente, a saída não diz nada sobre /nix/store e /nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1 . Resumindo, sugiro reconsiderar o problema e pensar no que você realmente quer alcançar. Talvez o readlink [-f] ou realpath [-e] seja simples?

    
por 01.10.2014 / 00:49

Tags