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?