通常更改符号链接目标时,首先会取消链接文件,然后使用新的目标路径重新创建符号链接。但是它将被分配一个新的inode编号。
也许有一个私有的Mac api,其中包含一个update_target_for_symlink()
函数,因此inode可以保持不变?
如果你想知道我需要它做什么...那就是一个文件管理器。我怀疑这根本不可能。无论如何,这正是使它有趣的地方。
看起来这似乎完全不可能。
仔细查看后,ln -sf 似乎符合您的要求。
第一列是 inode 号码。请注意,它不会改变:
$ ln -s foo bar
$ ls -li bar
16503 lrwxrwxrwx 1 golemon golemon 3 2010-08-21 12:29 bar -> foo
$ ln -sf buz bar
$ ls -li bar
16503 lrwxrwxrwx 1 golemon golemon 3 2010-08-21 12:29 bar -> buz
看起来ln-sf使用unlink()和symlink()来完成此操作:
$ strace ln -sf quux bar
<snip>
symlink("quux", "bar") = -1 EEXIST (File exists)
unlink("bar") = 0
symlink("quux", "bar") = 0
$ ls -li bar
16503 lrwxrwxrwx 1 golemon golemon 4 2010-08-21 12:31 bar -> quux
ln -snf buz bar
。 - vilpan