Con los enlaces simbólicos, las herramientas pueden hacer dos cosas:
- Tratar el enlace simbólico como un enlace simbólico ("preservando su naturaleza"), o
- Trate el enlace simbólico como el tipo de archivo al que apunta.
Diciendo eso -H
"conserva su naturaleza" no es una contradicción. Considere la alternativa. Si usa -L
, cualquier enlace simbólico cp
se abrirán los hallazgos y su contenido se copiará en el nombre del archivo de destino. Entonces, la fuente era un enlace simbólico, pero su copia no es un enlace simbólico. Así que "perdió su naturaleza como enlace simbólico".
Considere
$ mkdir subdir
$ echo "some contents" > subdir/file
$ ln -s file subdir/link
# definition of "list", the abbreviated ls -l output used below
$ list() { ls -l "[email protected]" | \
awk '$0 !~ /^total/ { printf "%s %s\t%s %s %s\n", $1, $5, $9, $10, $11 }' ; }
$ list subdir
-rw-rw-r-- 14 file
lrwxrwxrwx 4 link -> file
$ cp -rH subdir subdir-with-H
$ list subdir-with-H
-rw-rw-r-- 14 file
lrwxrwxrwx 4 link -> file
$ cp -rL subdir subdir-with-L
$ list subdir-with-L
-rw-rw-r-- 14 file
-rw-rw-r-- 14 link
La diferencia de comportamiento entre -L
y -H
llega cuando -r
también se especifica. cp
no creará enlaces simbólicos en subdirectorios con -L -r
pero lo hará si usas -H -r
.