进入符号链接文件目标的目录

进入符号链接文件目标的目录

如何创建命令(或别名)以转到包含符号链接目标文件的目录。例如,如果我有一个符号链接

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

相关内容