Vá para o diretório do destino do arquivo de link simbólico

Vá para o diretório do destino do arquivo de link simbólico

Como posso criar um comando (ou alias) para ir ao diretório que contém o arquivo de destino de um link simbólico. Por exemplo, se eu tiver um link simbólico

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

Eu gostaria de poder correr <command> symFilee ter isso cdpara mim/Users/zhermes/some/dir/

Responder1

A função a seguir verifica se o link simbólico existe e cdestá em seu diretório pai. Claro, também funciona com arquivos normais. Poderia ser mais inteligente com erros de readlinkou 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, onde não há -fopção 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 coreutilscomCerveja caseirae use greadlink -fem seu lugar.

informação relacionada