Se la copia viene eseguita in alcuni terminali della shell (ad es. Bash), allora cp
può essere esplicitamente detto di copiare il file a cui punta un collegamento --dereference
, anziché il collegamento stesso. Il comportamento predefinito di cp
è quello di copiare i file seguendo i loro collegamenti, ma molti browser di file grafici sembrano avere un comportamento predefinito nel tentativo di copiare i collegamenti e in genere mantenere la maggior parte degli attributi.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
Esempio
touch SomeFile.txt
echo "some content" > someFile.txt
ln -s -T someFile.txt someLink
echo "Some content for the test file." > someLink
mkdir someDirectory
ln -s -T someDirectory someDirLink
Il fatto che someLink
sia un collegamento, è mostrato dal l
flag nella prima posizione dell'output dell'elenco (e `d 'indica una directory).
ls -l
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
Il file contiene il contenuto e il collegamento punta al file, ma può essere utilizzato in qualsiasi modo il file potrebbe essere. (Notare la dimensione del file di collegamento rispetto alla dimensione del file di testo: 32 byte contro 12 byte.)
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test file.
Innanzitutto, copiare il collegamento in una directory. Quindi copiando il file nella directory, tramite il collegamento. (Di seguito mostra anche che i collegamenti alle directory funzionano in modo simile ai collegamenti ai file.):
cp -a someLink someDirLink/newCopy
cp -L someLink someDirectory/newCopy.txt
ll -l someDirLink/
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Attenzione
È possibile creare collegamenti per indicare un percorso completo o un percorso relativo. Poiché questo esempio utilizzava un collegamento basato sul percorso relativo della destinazione nella stessa directory del collegamento che veniva creato, il collegamento veniva interrotto quando veniva copiato in una nuova directory.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.