有时,我想知道原始/真实文件在我的系统中的位置,该文件通过多个符号链接链接到一个已知句柄。运行ls -l /path/to/file将显示下一个链接的位置,但是如果我想查找原始链接,我会发现自己复制粘贴了一堆路径,这很麻烦。
还有更直接的方法吗?从A直走到Z?还是我必须构建一个功能,在每个链接中依次工作,直到我们到达最终的“真实”文件?(欢迎对此活动提出建议!)
示例案例:我想找到所有安装在centos上的postgresql可执行文件。要做到这一点,我必须挖下下面的兔子洞:
which psql
> /usr/bin/psql
ls -l /usr/bin/psql
> l.......... ... /usr/bin/psql -> /etc/alternatives/pgsql-psql*
ls -l /etc/alternatives/pgsql-psql
> l.......... ... /etc/alternatives/pgsql-psql -> /usr/pgsql-11/bin/psql*
ls -l /usr/pgsql-11/bin/psql
> -.......... ... /usr/pgsql-11/bin/psql*
ls /usr/pgsql-11/bin/
> [Voila!]是否有一种从psql -> /usr/pgsql-11/bin/获得更容易(也更通用)的方法?
发布于 2019-11-20 17:44:07
您可以使用realpath递归解析所有符号链接,并为您提供一个规范路径:
$ cd /tmp
$ touch baz
$ ln -s baz bar
$ ln -s bar foo
$ ls -l foo
lrwxrwxrwx 1 me me 3 Nov 20 09:42 foo -> bar
$ realpath foo
/tmp/bazhttps://stackoverflow.com/questions/58959693
复制相似问题