← retour aux snippets

tee + process substitution: multiplexer un flux

Dupliquer un flux vers plusieurs commandes et/ou fichiers sans scripts complexes.

objectif

Envoyer une sortie à plusieurs consommateurs simultanément.

code minimal

cmd | tee >(gzip -9 > out.gz) >(wc -l > lines.txt) > /dev/null

utilisation

# logger une commande et analyser en parallèle
make 2>&1 | tee >(grep -i 'error' > errors.log) >(awk '/WARN/ {print}' > warns.log)

variante(s) utile(s)

# dupliquer vers réseau
tail -F app.log | tee >(nc -u 127.0.0.1 1514) >(logger -t app) >/dev/null

notes

  • chaque >(...) crée un FIFO éphémère.
  • attention à l’ordre et aux effets de buffering.