Рассмотрим следующую команду:
bash -c "echo x; cat 1" | tee 1
.
Насколько я понимаю, он будет переходить в новую оболочку, писать x
в stdout, писать file 1 not found
в stderr, выходить и возвращать управление родительскому процессу, а также писать x
в stdout и to 1
. Следовательно, я ожидаю, что конечный результат будет x
, а файл 1
содержит именно строку x
.
Однако, это не так. На самом деле файл 1
обычно содержит как минимум два экземпляра x
, а иногда и тысячи строк x
s. При пакетном тесте выполнения команды десять тысяч раз среднее число x
s, записанных в файл, составило 52,3, а медиана - 1. Какой механик вызывает это? Какое распределение вероятностей моделирует это поведение? Я подозреваю, что он условно геометрический и в остальном однородный.
x
s, записанных в файл, составило 4,35. Я думаю, это будет зависеть от загрузки машины.
tee
файл открыли для записи, прежде чемcat
открыть его для чтения,x
в файле может быть много ключей. В этом случае «цикл» завершается всякий раз, когдаcat
чтениеtee
выполняется быстрее, чем запись, достигая конца файла.