如何建立命令(或別名)來前往包含符號連結的目標檔案的目錄。例如,如果我有一個符號鏈接
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
改為使用。