Mit Symlinks haben Tools zwei Dinge, die sie tun können:
- Behandeln Sie den Symlink als Symlink ("Bewahrung seiner Natur"), oder
- Behandle den symbolischen Link als den Dateityp, auf den er zeigt.
Sag das -H
„bewahrt seine Natur“ ist kein Widerspruch. Betrachten Sie die Alternative. Wenn Sie -L
verwenden , alle symbolischen Links cp
Funde werden geöffnet und ihr Inhalt in den Zieldateinamen kopiert. Die Quelle war also ein Symlink, aber seine Kopie ist kein Symlink. Es hat also "seinen Charakter als Symlink verloren".
Betrachten Sie
$ 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
Der Unterschied im Verhalten zwischen -L
und -H
kommt wenn -r
ist ebenfalls angegeben. cp
erstellt keine Symlinks in Unterverzeichnissen mit -L -r
aber es wird, wenn Sie -H -r
verwenden .