使用* nix

时间:2015-09-01 10:46:02

标签: hardlink

我完成了以下操作:

  
      
  1. echo" test" >> T1
  2.   
  3. echo" test2" >> T2
  4.   
  5. ln t1 l1
  6.   
  7. cp t2 t1
  8.   
  9. cat l1
  10.   

用t2覆盖t1之后,我很惊讶硬链接仍然有效。根据我的理解,当您创建文件的新版本时,硬链接不会指向新版本。

为什么在硬链接上使用cat命令[覆盖后]硬链接仍然有效并指向新t1文件的内容?

1 个答案:

答案 0 :(得分:0)

根据OS X上cp的联机帮助页,这是预期的行为:

  

-f

     

如果无法打开目标文件,请将其删除并创建新文件,而不提示         确认无论其权限如何。 (-f选项会覆盖以前的任何-n选项。)

     

复制前目标文件未取消链接。因此,任何现有的访问权限都将是       保留

     

-n

     

不要覆盖现有文件。 (-n选项会覆盖以前的所有-f或-i选项。)

这意味着默认情况下不会在复制前删除目标文件。只有在删除其中一个文件后,硬链接才会中断。

为了始终如一地获得您想要实现的行为,您必须在复制之前删除目标文件。