在 OS X 中取消引用符号链接?

在 OS X 中取消引用符号链接?

在 OS X 中,如何取消引用指向规范文件名的符号链接?(即以/. 开头的文件名)

也就是说,我追求的是与 GNU readlink-f选项等效的选项:

kapow:~$ greadlink -f .bash_profile
/Users/mjs/.config/home/.bash_profile

OS Xreadlink则返回一个相对链接:

kapow:~$ readlink .bash_profile
.config/home/.bash_profile

stat(1)确实有很多选择,但我无法找出正确的组合来做我想做的事情。

答案1

最直接的解决方案是测试返回值,pwd如果发现 readlink 返回的是相对路径而不是存储在链接中的绝对路径,则将其添加到前面。任何不以 / 开头的内容都可以使用各种 unix 工具轻松测试。


我不知道这是否是一个有意识的设计决定,因为 OS X 更喜欢文件系统别名,它可以跟踪文件的唯一 ID 以及路径,或者只是从 BSD 继承而来的遗漏/差异。很明显,没有使用 OS X 版本的 readlink 合成链接文件完整路径的选项。

read link -f这里有来自另一个站点的几个可以在 OS X 上实现的现成解决方案...

如果你是 GNU 工具的粉丝,你会想要自制并安装 coreutils 包 - 然后您可以greadlink使用别名readlink并以最少的麻烦继续操作。

相关内容