为什么内容在 bash 中被 mv 之后仍继续添加到文件中?

Why does content keep being added to a file even after it was mv'd in bash?

将此代码放入脚本中说 how.bsh:

#!/bin/bash
echo '1'
mv ./*  ../
echo '2'

在目录 a/b 和 运行 中来自 b 像这样:

./how.bsh 1>list 2>&1

最终 list 文件在目录 a 中结束(正如预期的那样)BUT 包含 '2' !

怎么会这样;

编辑:

这是事实吗?:

所有现代文件系统都有 inode 的概念——一种跟踪文件内容的数据结构,它的存在独立于该 inode 的目录条目 link。

当您打开文件时,文件句柄指向索引节点——文件本身——而不是目录条目。因此,即使您重命名文件,只要目标位于同一文件系统上(因此可以使用 rename 系统调用),文件句柄仍然有效,并且继续追加到现有文件实例。