参见英文答案 >
How to resolve symbolic links in a shell script13个答案如何在bash中获取任何给定的路径并将其转换为规范形式,解除引用可能包含在路径中的任何符号链接?
例如:
~$ 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
如何获得/ tmp / symtest / foo / bar / cat的完整规范路径(即:/ tmp / symtest / cat)?
感谢
Andy Skelton,它的回答是readlink -f:
$:/tmp/symtest$ readlink -f /tmp/symtest/foo/bar/cat /tmp/symtest/cat