如何在 OSX 中创建硬链接?

如何在 OSX 中创建硬链接?

我想要的是拥有同一个文件的多个副本,每当我编辑其中一个时,它们都会更新。我以为硬链接ln可以解决我的问题。因此,我使用以下命令维基百科中有描述。但是,当我更改原始文件时,链接的文件并没有改变。

我是否误解了硬链接的作用?

  • 如果是:
    • ln那么和有什么区别cp
    • 我怎样才能做我想做的事?
  • 如果不:
    • 为什么没有用呢?
    • 我怎样才能让它工作?

答案1

也许编辑器正在做一些奇怪的事情,例如将文件复制到某个临时位置,或者其他什么。

我的建议恰恰相反:始终使用相同的路径编辑文件,并ln -s在任何地方使用符号链接()。

版本控制系统可能也相关。

答案2

硬链接在 OSX 上运行良好:

$ echo foo > a
$ ln a b
$ cat a
foo
$ cat b
foo
$ echo bar >> b
$ cat a
foo
bar
$ cat b
foo
bar
$

这可能是编辑器的问题(或功能!)。许多编辑器通过写入临时文件然后将该文件移动到您正在编辑的文件的顶部来执行原子写入。这意味着您将删除硬链接:

$ echo baz > c
$ mv c b
$ cat a
foo
bar

我认为没有简单的解决办法。

答案3

按照“教程”http://en.wikipedia.org/wiki/Ln_%28Unix%29#Hard_link,我在 Mac Os X 上执行了完全相同的命令,但它确实没有正常工作。

我起初以为 Mac Os X 有不同的行为,所以我在 Ubuntu 上尝试,但得到了完全相同的结果 :(

所以我能给你的答案是“根据维基百科的解释你确实理解得很好”。或者我们俩都感到困惑?

抱歉,我无法为您提供更多帮助 :(

相关内容