Якщо копіювання виконується в якомусь терміналі оболонки (тобто bash), то cp
можна явно сказати скопіювати файл, на який вказує посилання --dereference
, замість самого посилання. Поведінка за замовчуванням cp
- це копіювати файли, переслідуючи їх посилання, але, схоже, багато браузери графічних файлів мають типову поведінку при спробі копіювання посилань і, як правило, домагаються більшості атрибутів.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
Приклад
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
Те, що someLink
є посиланням, відображається l
прапором у першій позиції виводу списку (а `d 'позначає каталог).
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
Файл містить вміст і посилання на файл, але його можна використовувати практично будь-яким способом, яким він може бути. (Зверніть увагу на розмір файлу посилання та розмір текстового файлу: 32 байт проти 12 байт.)
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test 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
Обережність
Посилання можуть бути вказані на повний шлях або відносний шлях. Оскільки в цьому прикладі було використано посилання на основі відносного шляху цілі, що знаходиться в тому ж каталозі, що і створене посилання, посилання було розірвано, коли воно було скопійовано в новий каталог.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.