已关闭此问题为not about programming or software development。它目前不接受回答。
这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
26天前关闭
Improve this question
我的实时服务器有一个symbolic link,名为current
,我在releases
目录中有发行版,即current -> releases/2012-05-08_15-13
如果我想更新我的current
目录的符号链接,我必须unlink
/rm
它和re ln -s
它。
如何删除符号链接并一步完成更新到最新版本?
5条答案
按热度按时间atmip9wb1#
ln的形式是
尝试
删除当前链接并创建新链接。
flvlnr442#
如果你想在一个命令中完成它,按照@hughw的建议,运行
ln -sf
。如果你想原子地替换符号链接(即。这样就不会有符号链接不存在的时间点)创建一个新的符号链接,然后
mv
它覆盖旧的符号链接。vpfxa7rd3#
正如ToddR所建议的那样,这是唯一一个实际上适用于大多数Linux版本的答案-绝对是Ubuntu-它使用来自coreutils包的 * ln *)。让我证明给你看。
所以在Linux上正确的方法是:
-n,--no-dereference如果LINK_NAME是指向目录的符号链接,则将其视为普通文件
这是必不可少的,如果你不使用-n开关,你最终会在源目录中得到一个名为“target”的符号链接。
在我的例子中,
7qhs6swi4#
正确答案:
移动是一个原子操作。
不要用“In-snf”。strace 'ln -snf'显示了两个系统调用,unlink + symlink。
pvabu6sv5#
此示例清除了 -sfn 开关的使用:
输出量: