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
.