为什么附加到文件后的“cat”似乎会覆盖自身?

为什么附加到文件后的“cat”似乎会覆盖自身?

考虑以下两个(组)命令:

$ cat *.d | wc -l

$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l

我希望这两个输出相同的值。但是,当我在我拥有的特定目录上运行它时,我看到以下内容:

$ cat *.d | wc -l
7026

相比之下:

$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
295

如果你能原谅这个双关语的话,我的似乎cat被自己的尾巴绊倒了。这里发生了什么?请注意,如果我使用>而不是>>那么我会得到预期的输出7026

编辑:

有关更多信息,该问题是在本地 CentOS 7 VM(在 Mac 上运行)上出现的。我不应该因为我刚刚在单独的虚拟机上运行“相同的东西”而没有得到与上面相同的输出,两组命令都返回相同的输出。

在这两种情况下, 的版本cat均为 8.22, 的版本bash为 4.2.46(2)。

相关内容