![为什么附加到文件后的“cat”似乎会覆盖自身?](https://linux22.com/image/197489/%E4%B8%BA%E4%BB%80%E4%B9%88%E9%99%84%E5%8A%A0%E5%88%B0%E6%96%87%E4%BB%B6%E5%90%8E%E7%9A%84%E2%80%9Ccat%E2%80%9D%E4%BC%BC%E4%B9%8E%E4%BC%9A%E8%A6%86%E7%9B%96%E8%87%AA%E8%BA%AB%EF%BC%9F.png)
考虑以下两个(组)命令:
$ 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)。