為什麼附加到文件後的“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)。

相關內容