web-dev-qa-db-fra.com

Comment puis-je déréférencer des liens symboliques dans bash?

Comment puis-je prendre un chemin donné dans bash et le convertir en sa forme canonique, en déréférençant les liens symboliques qui peuvent être contenus dans le chemin?

Par exemple:

~$ mkdir /tmp/symtest
~$ cd /tmp/symtest/
/tmp/symtest$ mkdir -p foo/bar cat/dog
/tmp/symtest$ cd foo/bar/
/tmp/symtest/foo/bar$ ln -s ../../cat cat
/tmp/symtest/foo/bat$ cd ../../
/tmp/symtest$ tree
.
|-- cat
|   `-- dog
`-- foo
    `-- bar
       `-- cat -> ../../cat

6 directories, 0 files

Comment puis-je obtenir le chemin canonique complet de /tmp/symtest/foo/bar/cat (c'est à dire: /tmp/symtest/cat)?

43
David Dean

Merci à Andy Skelton , il semble que la réponse soit readlink -f:

$:/tmp/symtest$ readlink -f /tmp/symtest/foo/bar/cat
/tmp/symtest/cat
60
David Dean