Considérez la commande suivante:
bash -c "echo x; cat 1" | tee 1
.
Ma compréhension est qu'il se bifurquerait vers un nouveau shell, écrirait x
sur stdout, écrirait file 1 not found
sur stderr, quitterait et retournerait le contrôle au processus parent, et écrirait x
sur stdout et vers 1
. Par conséquent, je m'attendrais à ce que la sortie finale soit x
, et le fichier 1
contient exactement la chaîne x
.
Cependant, ce n'est pas le cas. En réalité, le fichier 1
contient généralement au moins deux instances x
, et parfois des milliers de lignes de x
s. Lors d'un test par lots d'exécution de la commande dix mille fois, le nombre moyen de x
s écrits dans le fichier était de 52,3 et la médiane était de 1. Quel mécanicien est à l'origine de cela? Quelle distribution de probabilité modélise ce comportement? Je soupçonne qu'il est conditionnellement géométrique et autrement uniforme.
x
s écrits dans le fichier était de 4,35. Je suppose que cela dépendra beaucoup de la charge de la machine.
tee
a ouvert le fichier pour l'écriture avant de l'cat
ouvrir pour la lecture, vous pouvez obtenir plusieursx
-es dans le fichier. Dans ce cas, la "boucle" se terminait chaque fois que lacat
lecture était plus rapide que l'tee
écriture, atteignant la fin du fichier.