今天在玩 symlink 的时候,遇到一点小问题,不过具体涉及到一些智熄操作我就不叙述如何复现它了。总之,我创建了一个符号链接,然后在本地和远程文件夹之间小小的腾挪了一下,结果当我想删除这个符号链接以后,发现删不掉了。我在本地ls -l
返回的结果是
ls: 无法访问'xxx':没有那个文件或目录
?????????? ? ? ? ? ? xxx
矛盾得很,ls 能显示它的存在,但是却说它不存在。我问 claude,它怀疑是这个文件的 metadata 损坏了,所以造成了一堆问号。最后我是在远程rm
掉的。
但在处理这个问题的时候,我倒是收获了一些别的关于 symlink 的知识。最重要的是关于 删除 symlink 是否会影响链接对象 的问题。 总而言之:
rm symlink
只会删除符号链接,而rm symlink/
则会删除符号链接指向的东西 于是rm -r symlink
只会删除符号链接,而rm -r symlink/
则会删除符号链接指向的东西,如果指向的是一个文件夹,那么就会删除那个文件夹中所有的文件 微妙的是,如果文件夹中还包含符号链接呢? 答案是rm
只会把这个符号链接当成一个文件删除,而不像一般的子文件夹一样会进入并删除里面的东西。 具体操作还是要小心,如果不放心,可以为rm
套上一层安全检查,检查待删除的目标中是否包含了符号链接指向的东西。