Betrachten Sie die folgenden zwei Befehlssätze:
$ cat *.d | wc -l
Und
$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
Ich würde erwarten, dass beide den gleichen Wert ausgeben. Wenn ich dies jedoch in einem bestimmten Verzeichnis ausführe, das ich habe, wird Folgendes angezeigt:
$ cat *.d | wc -l
7026
und im Vergleich:
$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
295
Es scheint, als würde meins cat
über seinen eigenen Schwanz stolpern, wenn Sie das Wortspiel verzeihen. Was passiert hier? Beachten Sie, dass ich die erwartete Ausgabe von erhalte, wenn ich >
anstelle von verwende .>>
7026
Bearbeiten:
Zur weiteren Information: Das Problem tritt auf einer lokalen CentOS 7-VM auf (die auf einem Mac läuft). Ich sollte nicht vergessen, dass ich gerade „dasselbe“ auf einer separaten VM ausgeführt habe und nicht dieselbe Ausgabe wie oben erhalte, beide Befehlssätze geben dieselbe Ausgabe zurück.
In beiden Fällen ist die Version cat
8.22 und die Version bash
4.2.46(2).