Como copio arquivos entre/fora de links simbólicos? (destino)

Como copio arquivos entre/fora de links simbólicos? (destino)

Suponha que eu tenha um sistema de arquivos como este:

/home/me/dir1/dir2/dir3/dir4/dir5/dir6/file1

Então em /home/me/dir1, eu crio um link simbólico:

$ cd /home/me/dir1
$ ln -s /home/me/dir1/dir2/dir3/dir4/dir5/dir6 linkdir6

Estou tentando copiar o arquivo1 para meu diretório inicial (este é meu exemplo simplificado, é mais complicado que isso - "/home/me/" é na verdade uma estrutura de diretório muito mais complicada, então "~/" não é uma solução).

$ cd linkdir6
$ cp file1 ../
$ cd ..
$ ls
dir2 linkdir6

Não vejo o arquivo1. Procurando por isso, eu encontro em/home/me/dir1/dir2/dir3/dir4/dir5/file1

Parecia que cpnão percebi que estava dentro de um diretório simbólico.

Como é que eucp fora deuma pasta simbólica?

Ou como faço cppara entender que ../deve ser desreferenciado (ondedestinona página de manual é adiado)?

Estou esquecendo de algo? Isso é possível?

Obrigado!

(nota final - o caso de uso real está em uma estrutura de diretório profunda, dentro de um diretório de link simbólico, tentando copiar um arquivo ../another-symlink-directory/ sem digitar caminhos completos - esse é um dos pontos dos links simbólicos, tanto quanto Estou preocupado)

Responder1

Na verdade, você seguiu o link com o arquivo cd linkdir6. Você está realmente nesse diretório, então ../ está um nível acima daí, no dir5.

A maneira mais segura com cp é estar no diretório de destino. Em seguida, use o link para acessar o arquivo de origem.

cd ~/me/dir1  #.. Target
cp linkdir6/file1 .

Pessoalmente, prefiro a opção -t (target) no cp.

cp -t ~/me/dir1 dir1/linkdir6/file1

Responder2

$ cp file1 "$(cd .. && pwd -P)"

Veresta resposta.

informação relacionada