在 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
并以最少的麻烦继续操作。