Como trabalhar com links simbólicos para diretórios

1

Estou experimentando links simbólicos e estou encontrando alguns problemas. A primeira é como, depois de seguir um link simbólico para um diretório, exibir o diretório de trabalho real em vez do diretório com relação ao link simbólico (ao usar pwd , por exemplo). A segunda é como "fazer o backup" no diretório real no sistema de arquivos, em vez de fazer o backup no link simbólico.

    
por dsaxton 03.05.2016 / 23:51

2 respostas

1

De man pwd no meu Ubuntu:

your shell may have its own version of pwd

Eu uso bash . O comando simples pwd me fornece um caminho em relação ao link simbólico; ainda /bin/pwd retorna o caminho real. O comando cd também é um bash embutido.

Em outras palavras: isso é específico do shell.

EDIT: o comentário do thrig (veja abaixo) parece ser uma alternativa melhor para tudo que eu escrevi abaixo desta linha.

Para "fazer backup" no diretório real, tente cd "$(/bin/pwd)/.." ou cd "$(/bin/pwd)"; cd .. . O segundo formulário pode ser ajustado para criar um alias para cd , eu acho:

alias cd='cd "$(/bin/pwd)"; cd'

Da mesma forma, você pode se livrar do bash pwd builtin:

alias pwd='/bin/pwd'
    
por 04.05.2016 / 00:30
3

O que você quer é pwd -P .

De man pwd no CentOS 6:

   -L, --logical
          use PWD from environment, even if it contains symlinks

   -P, --physical
          avoid all symlinks

Ou, na página man% BSD pwd e um pouco mais útil:

 -L      Display the logical current working directory.

 -P      Display the physical current working directory (all symbolic
         links resolved).

Não tenho 100% de certeza do que você quer dizer com "backup", mas supondo que você queira dizer "Alterar diretórios para o pai do diretório atual", é possível usar:

cd "$(dirname "$(pwd -P)")"

Qual é equivalente a cd .. se o seu caminho de trabalho atual não incluir links simbólicos.

Como alternativa, você pode usar cd "$(pwd -P)" para ir para o caminho físico do diretório lógico atual e usar cd .. conforme desejado.

    
por 04.05.2016 / 01:14