Alterando o diretório pai (../) com links simbólicos

30

Eu tenho um link simbólico

~/link -> ~/a/really/long/path

Quando faço

cd ~/link
cd ..    

leva-me a

~

mas eu quero ir para

~/a/really/long

Existe uma maneira de fazer isso?

Estou usando o bash.

    
por Xodarap 11.04.2011 / 01:38

3 respostas

36

Bash (assim como ksh, zsh, e até mesmo cinza) rastreia as alterações no diretório para que cd /foo/bar && cd .. sempre o leve a /foo , mesmo que bar seja um symlink. Passe a opção -P para cd para ignorar a alteração rastreada e siga a estrutura de diretórios “física”:

cd -P ..

Consulte help cd ou man builtins para documentação sobre o bash incorporado em cd . Se você realmente não gosta do recurso de rastreamento de diretório, pode desativá-lo com set -P no bash ( set -o no_chase_link em zsh).

    
por 11.04.2011 / 01:58
2

Você também pode usar o readlink para encontrar o caminho físico para esse diretório e, em seguida, ir para um diretório mais alto:

cd $(readlink -f .)/..
    
por 12.04.2011 / 05:48
2

Um método que você pode usar é usar um alias em vez de um symlink para levá-lo ao caminho ~ / a / really / long /. Esse é o método que eu uso, desde então, eu posso apenas digitar um simples comando de carta 1/2 / et cetera em vez de cd symlink

    
por 11.04.2011 / 01:50