Что такое ошибка «не удалось создать символическую ссылку: файл существует»?

36

Я пытаюсь создать символическую ссылку в своем домашнем каталоге для каталогов и файлов на моем разделе данных. Я пробовал:

~/Documents$ ln -sv ~/Documents/saga /media/mariajulia/485f3e29-355c-4be3-b80a-1f5abd5604b6/mariajulia/Downloads/saga..doc

, чтобы создать символическую ссылку с именем saga в моем каталоге Documents в папке home . Выход терминала:

ln: failed to create symbolic link ‘/media/mariajulia/485f3e29-355c-4be3-b80a-1f5abd5604b6/mariajulia/Downloads/saga..doc’: File exists

Я проверял содержимое ~/Documents с ls -a, нет ничего, кроме . и .. . Обычно моя папка home пуста, это просто новая системная установка.

    
задан maria 30.10.2014 в 09:37
источник

4 ответа

30

Это классическая ошибка ... это наоборот:

ln -s Existing-file New-name 

, поэтому в вашем случае

ln -sv /media/mariajulia/485f3e29-355c-4be3-b80a-1f5abd5604b6/mariajulia/Downloads/saga..doc ~/Documents/saga 

должен работать. Обратите внимание:

  1. , если ~/Documents/saga существует и не является каталогом, вы также получите ошибку;

  2. , если ~/Documents/saga существует и является каталогом, символическая ссылка будет ~/Documents/saga/saga..doc (вы уверены в двойной точке?)

  3. , если ~/Documents/saga не существует, ваша символическая ссылка будет ~/Documents/saga (как есть, без расширения).

ответ дан Rmano 30.10.2014 в 10:02
источник
13

Как ответил @Rmano в своем ответе , аргументы были в неправильном порядке. Я тоже часто делал ту же ошибку. Таким образом, я нашел

Неверный способ создания символических ссылок

Сначала перейдите в каталог, в котором вы хотите создать ссылку

cd ~/Documents/saga

Затем создайте ссылку с единственным аргументом .

ln -s /very/long/path/to/target/Downloads/saga..doc

Это создаст ссылку на текущий каталог с тем же именем, что и целевой.

    
ответ дан MadMike 30.10.2014 в 14:47
9

У меня такое же сообщение об ошибке
при перенаправлении

ln -s /usr/bin/nodejs /usr/bin/node

from node.js v0.10.25
to node.js v4.2.3
поэтому я смотрю man ln и используйте

[OPTION] 
-f, --force
          remove existing destination files

Это работа, как я ожидал.

    
ответ дан Alexander Glulkhovtsev 12.02.2016 в 05:58
0

Не может быть несвязанным.
Для меня ссылка была мертва. Указание на существующую папку. Когда вы пытаетесь заменить его, оно не сработает с этим сообщением. ^ Таким образом, достаточно простого rm linkName .

    
ответ дан AdrianH 15.02.2018 в 10:00