Dupliquer la sortie d'un script vers un fichier de log et vers stdout

tee est une commande permettant de lire depuis l’entrée standard et écrire sur la sortie standard tout en écrivant dans des fichiers.

Elle fonctionne ainsi :

ls -l | tee file.txt

Pour rediriger la sortie d’un script dans un fichier de log et, en même temps, l’avoir à l’écran sur stdout :

LOGFILE="/var/log/foo.log"
exec > >(tee -a "$LOGFILE") 2>&1

Attention, c’est du bash (et non sh), à cause de l’utilisation du process substitution >(...) (bashism, hors standard POSIX donc).