A seguinte função verifica se o link simbólico existe e cd s para seu diretório pai. Claro, também funciona com arquivos regulares. Pode ser mais inteligente com erros de readlink ou cd , mas é um começo.
GNU / Linux:
No GNU / Linux, você pode usar readlink -f :
cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink -f "$1")")" || echo "No such file: $1" }
BSD / OS X:
O seguinte deve funcionar no Unix / OS X, em que não há a opção -f para readlink . Claro que isso significa que não seguirá links simbólicos aninhados.
cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink "$1")")" || echo "No such file: $1" }
No OS X, você pode instalar o coreutils com o Homebrew e usar greadlink -f .