符号链接在Linux系统中扮演着非常有用的角色。他们可以帮助你记住重要的文件位于一个系统,方便你来访问这些文件并保存大量的磁盘空间和麻烦让你不必要的复制大型文件只是为了让他们更容易。
符号链接到底是什么?
符号链接通常被称为“符号链接”或“软链接”,是非常小的文件。实际上,一个符号链接真正包含的是它所指向的文件的名称,通常包括文件系统路径(相对于当前位置或绝对位置)。如果一个名为REF1指向一个名为的文件/应用程序/文献/ ref - 2020,REF1即使ref-2020文件是2tb,也将是19个字符长。如果它指向./ref-2020时,将10只在长度字符。如果它指向ref - 2020,只有八个。
如果您发出类似“vi ref1”的命令(其中ref1是符号链接的名称),您最终将编辑ref1指向的任何文件,不符号链接本身的内容。Linux系统知道如何使用符号链接,并且只需要做正确的事情。类似地,如果您使用以下命令猫,更多的,头要么尾巴,您将查看所引用文件的内容。
如果你删除一个符号链接,另一方面,你将删除链接,而不是被引用的文件。同样,Linux做有意义的事情。符号链接的本意是让文件的使用和共享变得更容易——仅此而已。
当符号链接会出现问题
当符号链接指向的文件从系统中删除或重命名时,符号链接将不再按预期工作。符号链接只不过是存储在某个特定目录中的一个引用,它不会随着指向文件的更改而更新或删除。它会一直指向引用的文件,即使该文件已经消失很久了。
如果您尝试使用一个符号链接指向一个不存在的文件,你会得到这样的错误:
不能打开'whassup'阅读:没有这样的文件或目录
如果你试图访问指向它自己的符号链接(是的,更奇怪的事情发生了),你会看到这样的东西:
$ lrwxrwxrwx 1 shs shs 5 5月28日18:07 loopy -> loopy
而且,以防长清单中的第一个字母没有引起您的注意,它表明该文件是一个符号链接。的rwxrwxrwx权限是标准的,不反映符号链接指向的文件的权限。
发现断符号链接
find命令有一个选项,允许您定位指向不再存在的文件的符号链接。该命令列出当前目录中的符号链接:
发现美元。型升
在“L”(小写的L)告诉find命令查找符号链接。
另一方面,下面显示的命令在当前目录中查找指向文件的符号链接不存在:
发现美元。-xtype升
为了避免在命令试图查看您没有检查权限的文件或目录时出现错误,您可以像这样将所有错误输出发送到/dev/null:
发现美元。-xtype l 2 > / dev / null
您还可以使用类似这样的命令找到损坏的符号链接。它比之前的要长,但应该做同样的事情:
发现美元。l类型!-exec test -e {} \;安全性2 > / dev / null
如何处理损坏的符号链接
除非您知道文件a符号链接引用将被替换,否则最好的方法就是简单地删除断开的链接。事实上,如果你愿意,你可以在一个命令中找到并删除坏掉的符号链接。
发现美元。-xtype l 2>/dev/null -exec rm {} \;
的rm {}该命令匝的部分变成了“删除文件名”命令。
相反,如果您希望将符号链接与另一个文件相关联,则必须删除符号链接,然后重新创建它,使其指向新文件。这里有一个例子:
$ rm ref1 $ ln -s /apps/data/newfile ref1
总结
符号链接使引用的文件更容易找到和使用,但它们有时演变成宣传餐车去年关闭多一点路标。查找命令可以帮助你摆脱坏的符号链接或者提醒您注意缺少的文件,你仍然可能需要的。