Рассмотрим следующие два (набора) команд:
$ 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 (которая работает на Mac). Я должен заметить, что я только что запустил «то же самое» на отдельной виртуальной машине и не получил тот же вывод, что и выше, оба набора команд возвращают тот же вывод.
В обоих случаях версия cat
— 8.22, а версия bash
— 4.2.46(2).