%20.png)
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 cp
no darse cuenta de que estaba dentro de un directorio simbólico.
Cómo puedocp
fuera de¿Una carpeta simbólica?
O, ¿cómo hago cp
para 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.