Considere el siguiente comando:
bash -c "echo x; cat 1" | tee 1
.
Tengo entendido que se bifurcaría a un nuevo shell, escribiría x
en stdout, escribiría file 1 not found
en stderr, saldría y devolvería el control al proceso padre, y escribiría x
en stdout y to 1
. Por lo tanto, esperaría que el resultado final fuera x
, y el archivo 1
contiene exactamente la cadena x
.
Sin embargo, éste no es el caso. En realidad, el archivo 1
generalmente contiene al menos dos instancias x
y, a veces, miles de líneas de x
s. En una prueba por lotes de ejecutar el comando diez mil veces, el número medio de x
s escritos en el archivo fue 52.3, y la mediana fue 1. ¿Qué mecánico está causando esto? ¿Qué distribución de probabilidad modela este comportamiento? Sospecho que es condicionalmente geométrico y por lo demás uniforme.
x
s escritos en el archivo fue de 4.35. Supongo que dependerá mucho de la carga de la máquina.
tee
ha abierto el archivo para escribir antes de abrirlocat
para leer, puede obtener muchosx
-es en el archivo. En ese caso, el "ciclo" terminaría siempre que lascat
lecturas fueran más rápidas que lastee
escrituras, llegando al final del archivo.