行为:
me@local: tree
.
|-- ba
| `-- file.txt
|-- foo
| `-- file.txt -> ba/file.txt
`-- foobar
现在,假设我将 file.txt 从移动ba
到foobar
:
me@local: mv ba/file.txt foobar/file.txt
我注意到 foo 文件夹中的符号链接仍然指向ba/file.txt
路径。
有一种方法可以创建在移动源文件时自动更新路径的符号链接?
或者当我删除源文件时被删除的符号链接?
会很棒。
您可以创建硬链接。
硬链接有其自身的缺点,例如,没有指向目录的链接,没有跨文件系统的链接。当您删除“原始”时,它们不会被删除;事实上,它们会阻止驱动器空间被释放,您仍然可以通过硬链接访问内容。
您不能在文件浏览器(文件,以前的 Nautilus)中创建硬链接,但有一个旧的错误报告(已关闭,不会修复)。
据我所知,普通的 linux 文件系统无法做到这一点。
符号链接实际上只是一段愚蠢的文本,上面写着“看,我真的叫 Foo”——正如您所发现的,没有检查 Foo 是否存在。您可以制作指向任何内容的符号链接,就像制作指向有用内容的符号链接一样容易。
也许对 ext2/3/4 以外的文件系统(比如 jfs? 或 zfs? 或 zfs?)有更多了解的人可能会说这在比 ext2/3/4 更高级的文件系统下是否可行。也许NTFS甚至可能支持这一点?NTFS 本身没有符号链接,但还有其他一些稍微相似的东西(它的名字现在让我忘记了)。
是的你可以。
在 shell 中,您必须键入:
ls -l
这是一个强链接,即使您删除了 ba/file.txt 中的文件,它仍保留在 foo/file.txt 中(您可以使用命令查看有多少链接如果你想做你所做的(创建一个符号链接),你必须输入:
编写脚本或程序来将 xattr 添加到文件中,告诉它指向它的符号链接的路径。然后为您使用的实用程序(例如,mv)编写一个包装脚本,以便在移动源文件时更新符号链接的目标。
虽然我只是半开玩笑,这是一个可行的解决方案,但有这么多壁柜(而不是角落或边缘柜......)肯定会引起很多头痛(例如,用任何移动文件其他程序)。