¿Cómo copio archivos a través o fuera de enlaces simbólicos? (dest)

¿Cómo copio archivos a través o fuera de enlaces simbólicos? (dest)

Supongamos que tengo un sistema de archivos como este:

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

Luego en /home/me/dir1, creo un enlace simbólico:

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

Estoy intentando copiar el archivo1 a mi directorio de inicio (este es mi ejemplo simplificado, es más complicado que esto: "/home/me/" es en realidad una estructura de directorio mucho más complicada, por lo que "~/" no es una solución).

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

No veo el archivo 1. buscándolo lo encuentro en/home/me/dir1/dir2/dir3/dir4/dir5/file1

Parecía cpno darse cuenta de que estaba dentro de un directorio simbólico.

Cómo puedocp fuera de¿Una carpeta simbólica?

O, ¿cómo hago cppara entender que ../se debe eliminar la referencia (dondedestinoen la página de manual es deferencia)?

¿Me estoy perdiendo de algo? ¿Es esto siquiera posible?

¡Gracias!

(nota final: el caso de uso real es en una estructura de directorio profunda, dentro de un directorio de enlace simbólico, intentando copiar un archivo ../another-symlink-directory/ sin escribir rutas completas; ese es uno de los puntos de los enlaces simbólicos en lo que respecta a Estoy preocupada)

Respuesta1

De hecho, has seguido el enlace con el cd linkdir6. Realmente estás en ese directorio, por lo que ../ está un nivel por encima de allí, en dir5.

La forma más segura con cp es estar en el directorio de destino. Luego use el enlace para acceder al archivo fuente.

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

Personalmente, prefiero la opción -t (destino) en cp.

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

Respuesta2

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

Veresta respuesta.

información relacionada