`cat` の後にファイルを追加すると、それ自体が上書きされるように見えるのはなぜですか?

`cat` の後にファイルを追加すると、それ自体が上書きされるように見えるのはなぜですか?

次の 2 つのコマンド (セット) を検討してください。

$ cat *.d | wc -l

そして

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

これら 2 つは同じ値を出力すると予想されます。ただし、特定のディレクトリでこれを実行すると、次のようになります。

$ cat *.d | wc -l
7026

比較すると:

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

catしゃれを許して頂ければ、my は自分の尻尾につまずいているように見えます。ここでは何が起こっているのでしょうか?>の代わりにを使用すると>>、期待される出力が得られることに注意してください7026

編集:

もう少し詳しく説明すると、この問題はローカルの CentOS 7 VM (Mac で実行中) で発生しています。別の VM で「同じこと」を実行しただけなのに、上記と同じ出力が得られず、両方のコマンド セットが同じ出力を返すことに注意してください。

どちらの場合も、のバージョンはcat8.22 で、のバージョンはbash4.2.46(2) です。

関連情報