Dengan symlink, alat memiliki dua hal yang dapat mereka lakukan:
- Perlakukan symlink sebagai symlink ("mempertahankan sifatnya"), atau
- Perlakukan symlink sebagai jenis file yang dituju.
Mengatakan bahwa -H
"mempertahankan sifatnya" bukanlah sebuah kontradiksi. Pertimbangkan alternatifnya. Jika Anda menggunakan -L
, semua symlink cp
find akan dibuka, dan isinya disalin ke nama file target. Jadi sumbernya adalah symlink, tetapi salinannya bukan symlink. Jadi itu "kehilangan sifatnya sebagai symlink".
Pertimbangkan
$ 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
Perbedaan perilaku antara -L
dan -H
muncul saat -r
ditentukan juga. cp
tidak akan membuat symlink di subdirektori dengan -L -r
tetapi itu akan terjadi jika Anda menggunakan -H -r
.