Ir para o diretório do destino do arquivo symlink

1

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

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

Eu gostaria de poder executar <command> symFile e tê-lo cd me para /Users/zhermes/some/dir/

    
por DilithiumMatrix 26.01.2015 / 16:05

1 resposta

1

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 .

    
por 26.01.2015 / 16:23