我按照指定的顺序运行了以下命令:
$ln a b
$ls -i a b
523669 a 523669 b
$rm -f a
$ls -i b
523669 b
Run Code Online (Sandbox Code Playgroud)
我从这个测试中得出结论,该命令rm
实际上只删除了文件名(a
在这个测试中)而不是文件,因为 inode 仍然存在并且可以通过另一个文件名 ( b
)检索。
我的问题是,如果一个文件只硬链接到一个文件名,那么当rm
对文件执行时,真正的文件(即inode)是否被完全删除?如果没有,是否可以在没有文件名的情况下仅通过 inode 检索文件 inode?
我将 /home 目录更改为不同的分区,但无法从中访问文件,我已经能够从这个问题中解决一些问题 -在切换到不同的分区后如何访问先前安装的内容?.
如果我之前已经注意到目录的 inode,我是否可以单独使用它来重命名目录?
我试过
xtricman?ArchVirtual??~ls /proc/self/fd/ -l
Total 0
lrwx------ 1 xtricman users 64 1? 16 16:34 0 -> /dev/pts/0
lrwx------ 1 xtricman users 64 1? 16 16:34 1 -> /dev/pts/0
lrwx------ 1 xtricman users 64 1? 16 16:34 2 -> /dev/pts/0
lrwx------ 1 xtricman users 64 1? 16 16:34 3 -> '/home/xtricman/a (deleted)'
lr-x------ 1 xtricman users 64 1? 16 16:34 4 -> /proc/1273/fd
xtricman?ArchVirtual??~ln /proc/self/fd/3 b
ln: failed to create hard link 'b' => '/proc/self/fd/3': Invalid cross-device link
Run Code Online (Sandbox Code Playgroud)
由于 inode 仍在磁盘上,如何为其重新创建名称?如果没有指向该 …