如何创建命令(或别名)以转到包含符号链接目标文件的目录。例如,如果我有一个符号链接
symFile@ -> /Users/zhermes/some/dir/someFile
我希望能够跑步,<command> symFile
并且cd
/Users/zhermes/some/dir/
答案1
以下函数检查符号链接是否存在,并cd
转到其父目录。当然,它也适用于常规文件。它可以更巧妙地处理来自readlink
或 的错误cd
,但这只是一个开始。
GNU/Linux:
在 GNU/Linux 中,您可以使用readlink -f
:
cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink -f "$1")")" || echo "No such file: $1" }
BSD/OS X:
以下内容应适用于没有-f
选项的Unix / OS X。readlink
当然,这意味着它不会遵循嵌套的符号链接。
cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink "$1")")" || echo "No such file: $1" }
在 OS X 上,你可以coreutils
使用自制并使用greadlink -f
。