什么是“未能创建符号链接:文件存在”错误?

mar*_*ria 91 symbolic-link

我正在尝试在我的主目录中创建一个指向我的数据分区上的目录和文件的符号链接。我试过了:

~/Documents$ ln -sv ~/Documents/saga /media/mariajulia/485f3e29-355c-4be3-b80a-1f5abd5604b6/mariajulia/Downloads/saga..doc
Run Code Online (Sandbox Code Playgroud)

在我的文件夹中创建一个以saga我的Documents目录命名的符号链接home。终端输出是:

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

我正在检查~/Documentswith ls -a的内容,除了.and什么都没有..。通常我的home文件夹是空的,它只是一个全新的系统安装。

Rma*_*ano 60

这是一个经典的错误......它是相反的:

ln -s Existing-file New-name 
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下

ln -sv /media/mariajulia/485f3e29-355c-4be3-b80a-1f5abd5604b6/mariajulia/Downloads/saga..doc ~/Documents/saga 
Run Code Online (Sandbox Code Playgroud)

应该管用。请注意:

  1. 如果~/Documents/saga存在并且不是目录,您也会有错误;

  2. 如果~/Documents/saga存在并且是一个目录,符号链接将是~/Documents/saga/saga..doc(你确定双点?)

  3. 如果~/Documents/saga不存在,您的符号链接将是~/Documents/saga(因为它是,没有扩展名)。

  • 永远记住参数顺序和`cp`一样 (16认同)
  • 我的助记符是“什么地方”,例如,链接什么地方,移动什么地方...... (2认同)
  • 甚至还有“cp -s”。 (2认同)

Ale*_*sev 32


重定向时 我有相同的错误消息

ln -s /usr/bin/nodejs /usr/bin/node
Run Code Online (Sandbox Code Playgroud)

从 node.js v0.10.25
到 node.js v4.2.3
所以我查看man ln 并使用

[OPTION] 
-f, --force
          remove existing destination files
Run Code Online (Sandbox Code Playgroud)

这是我预期的工作。

  • 所以那就是`ln -sf` ... (3认同)
  • 我认为他建议将 --force 添加到您的 ln 命令 ln -sv ~/Documents/saga /media/mariajulia/485f3e29-355c-4be3-b80a-1f5abd5604b6/mariajulia/Downloads/saga..doc --force (2认同)

Mad*_*ike 19

正如@Rmano 在他的回答中回应的那样,这些论点的顺序是错误的。我也经常犯同样的错误。于是我找到了一个

创建符号链接的万无一失的方法

首先进入要创建链接的目录

cd ~/Documents/saga
Run Code Online (Sandbox Code Playgroud)

然后使用单个参数创建链接。

ln -s /very/long/path/to/target/Downloads/saga..doc
Run Code Online (Sandbox Code Playgroud)

这将创建一个指向与目标同名的当前目录的链接。