Pomocí symbolických odkazů mohou nástroje dělat dvě věci:
- Zacházejte se symbolickým odkazem jako se symbolickým odkazem („zachování jeho povahy“), nebo
- Zacházejte se symbolickým odkazem jako s typem souboru, na který odkazuje.
Řekněme, že -H
"zachovává svou povahu" není rozpor. Zvažte alternativu. Pokud použijete -L
, všechny symbolické odkazy cp
nálezy se otevřou a jejich obsah se zkopíruje do názvu cílového souboru. Zdroj byl tedy symbolický odkaz, ale jeho kopie symbolickým odkazem není. Takže to "ztratilo svou povahu jako symbolický odkaz".
Zvažte
$ 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
Rozdíl v chování mezi -L
a -H
nastane, když -r
je také specifikováno. cp
nevytvoří symbolické odkazy v podadresářích s -L -r
ale bude, pokud použijete -H -r
.