删除指向自身的符号链接

删除指向自身的符号链接

我意外地创建了一个指向同一目录中自身的符号链接。我试过了ln -sfnrm -f我使用的是 Ubuntu 20.04。它在我的Pictures文件夹中:

picture_link -> picture_link

是否有一个简单的 bash 命令来删除它,或者我是否需要编译一个 C 程序来访问一些低级 API?

答案1

符号链接并不特殊,您可以像删除任何文件一样删除它们。

rm . 尝试删除不起作用的当前目录,并-f抑制您可能收到的任何错误消息。

因此,请尝试rm picture_link不采用任何额外选项,看看会发生什么。

答案2

应大家的要求,我将解释我是如何解决这个问题的:下面是 Bash 中一个非常简单的设置

(我认为让符号链接指向自身有许多步骤。重要的是我有一个想要删除的自引用链接。)

rogman@rogman-ThinkCentre-M75e:~$ mkdir bad_links
rogman@rogman-ThinkCentre-M75e:~$ cd bad_links
rogman@rogman-ThinkCentre-M75e:~/bad_links$ ln -s loopy loopy
total 0
lrwxrwxrwx 1 rogman rogman 5 Mar 13 09:52 loopy -> loopy

现在我在 bad_links 目录上设置了不变性位。我需要 root 或“sudo”权限。

rogman@rogman-ThinkCentre-M75e:~$ sudo chattr +i bad_links

现在我列出不变性位:

rogman@rogman-ThinkCentre-M75e:~$ lsattr | grep "bad_links"
----i---------e----- ./bad_links

现在我尝试删除符号链接:

rogman@rogman-ThinkCentre-M75e:~/bad_links$ rm loopy
rm: cannot remove 'loopy': Operation not permitted

rogman@rogman-ThinkCentre-M75e:~/bad_links$ sudo rm loopy
rm: cannot remove 'loopy': Operation not permitted

rogman@rogman-ThinkCentre-M75e:~/bad_links$ sudo rm -f loopy
rm: cannot remove 'loopy': Operation not permitted

好吧,也许我不能删除它,我会尝试改变它指向的位置:

rogman@rogman-ThinkCentre-M75e:~/bad_links$ ln -sfn ../blah123.txt loopy
ln: failed to create symbolic link 'loopy': Operation not permitted

这没用。我将删除目录中的不变性位

rogman@rogman-ThinkCentre-M75e:~$ chattr -i bad_links
chattr: Operation not permitted while setting flags on bad_links
rogman@rogman-ThinkCentre-M75e:~$ sudo chattr -i bad_links
rogman@rogman-ThinkCentre-M75e:~$

现在让我们正常删除符号链接

rogman@rogman-ThinkCentre-M75e:~/bad_links$ rm loopy
rogman@rogman-ThinkCentre-M75e:~/bad_links$

相关内容