シンボリックリンクファイルターゲットのディレクトリへ移動

シンボリックリンクファイルターゲットのディレクトリへ移動

シンボリックリンクのターゲットファイルを含むディレクトリに移動するためのコマンド(またはエイリアス)を作成するにはどうすればよいでしょうか。たとえば、シンボリックリンクがある場合

symFile@ -> /Users/zhermes/some/dir/someFile

走れるようになりたいし<command> symFilecd私もそうしたい/Users/zhermes/some/dir/

答え1

次の関数は、シンボリックリンクが存在するかどうかを確認し、その親ディレクトリに移動します。もちろん、通常のファイルでも機能します。またはcdからのエラーについては、さらに巧妙にすることもできますが、これは始まりです。readlinkcd

GNU/Linux:

GNU/Linux では、以下を使用できますreadlink -f

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

OS X:

以下は、-fオプションがない Unix / OS X で動作するはずですreadlink。もちろん、これはネストされたシンボリックリンクをたどらないことを意味します。

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

OS Xではcoreutils自家製代わりに使用してくださいgreadlink -f

関連情報