前往符號連結檔案目標目錄

前往符號連結檔案目標目錄

如何建立命令(或別名)來前往包含符號連結的目標檔案的目錄。例如,如果我有一個符號鏈接

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:

以下內容應該適用於 Unix/OS X,其中-f沒有readlink.當然,這意味著它不會遵循嵌套符號連結。

cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink "$1")")" || echo "No such file: $1" }

在 OS X 上,您可以coreutils安裝自製greadlink -f改為使用。

相關內容