Considere os dois (conjuntos de) comandos a seguir:
$ cat *.d | wc -l
e
$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
Eu esperaria que os dois produzissem o mesmo valor. No entanto, quando executo isso em um diretório específico que possuo, vejo o seguinte:
$ cat *.d | wc -l
7026
e em comparação:
$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
295
Parece que o meu cat
está tropeçando no próprio rabo, se você me permite o trocadilho. O que esta acontecendo aqui? Observe que se eu usar >
em vez de >>
então obtenho a saída esperada de 7026
.
Editar:
Para obter mais informações, o problema surge em uma VM CentOS 7 local (que está sendo executada em um Mac). Eu não deveria ter acabado de executar a "mesma coisa" em uma VM separada e não obtive a mesma saída acima, ambos os conjuntos de comandos retornam a mesma saída.
Em ambos os casos, a versão cat
é 8.22 e a versão bash
é 4.2.46(2).