¿Por qué parece que `cat` seguido de agregar a un archivo se sobrescribe?

¿Por qué parece que `cat` seguido de agregar a un archivo se sobrescribe?

Considere los siguientes dos (conjuntos de) comandos:

$ cat *.d | wc -l

y

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

Esperaría que los dos generaran el mismo valor. Sin embargo, cuando ejecuto esto en un directorio particular que tengo, veo lo siguiente:

$ cat *.d | wc -l
7026

y en comparación:

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

Parece que catestoy tropezando con su propia cola, si se me permite el juego de palabras. ¿Que está sucediendo aquí? Tenga en cuenta que si uso >en lugar de >>obtengo el resultado esperado de 7026.

Editar:

Para obtener un poco más de información, el problema surge en una máquina virtual CentOS 7 local (que se ejecuta en una Mac). No debería haber ejecutado "lo mismo" en una máquina virtual separada y no obtengo el mismo resultado que el anterior, ambos conjuntos de comandos devuelven el mismo resultado.

En ambos casos, la versión cates 8.22 y la versión bashes 4.2.46(2).

información relacionada