Non, je t'ai dit une bêtise, en fait ça préserve mal les descripteurs, il peut y avoir des chevauchements.
Comme ça, ça devrait être mieux :
command 2> >(1>&2 tee err) | tee out
Et tu peux rajouter
-a pour ne pas écraser les fichiers à chaque fois si tu veux.
J'avoue ne pas bien saisir la subtilité qui différencie ce que j'ai proposé en #15 et en #17.
À priori, on pourrait penser que
cmd 1> >(tee out) et
cmd | tee out sont équivalents, mais non.
Il y a une sorte d'hermétisme avec le pipe que l'on n'a pas avec les substitutions de processus : c'est comme ça 😃