我意外地创建了一个指向同一目录中自身的符号链接。我试过了ln -sfn
。rm -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$