好吧,这让我很头疼。在 OS X 中,要创建硬链接,在终端窗口中,你应该只需输入以下内容即可...
ln a.txt b.txt
...这将创建一个从a.txt
到 的硬链接b.txt
。简单又直接。
当我执行该语句时,果然,在 Finder 中,b.txt
出现在 旁边a.txt
。但是,即使a.txt
使用 TextEdit 编辑后,b.txt
仍然有原始数据!换句话说,它看起来像是执行了复制,而不是链接,无论是硬链接还是其他链接。
对我来说毫无意义!有人能告诉我我做错了什么吗?
答案1
这种行为的原因相当简单,它与大多数 Mac OS X 应用程序中文件的保存方式有关:原子方式。
所发生的情况是,文件的副本被写入临时暂存区,然后移动以替换原始文件。
这很自然地会破坏硬链接。
答案2
如果出现,请参阅来自超级用户的此条目,这是 TextEdit 的一个功能。因此,创建硬链接的正常方法是正确的,但 TextEdit 的行为却破坏了这一点。(链接显示它创建一个新文件,然后在编辑后将其移到旧文件上。)
答案3
请注意,emacs 默认也会表现出这种(令人吃惊的!)行为(在所有 unix 中),尽管原因略有不同(在磁盘空间非常低的情况下,这是“安全”的做法)。但是,可以通过多种方式进行配置。
请参阅make-backup-files
(使用C-h v make-backup-files
)和
backup-by-coping
backup-by-coping-when-linked
backup-by-coping-when-mismatch
backup-by-coping-when-privileged-mismatch