Lorsque l’on écrit un script bash, on peut vouloir écrire des message à la fois sur la sortie standard à des fins d’information et/ou debuggage lorsque l’on lance le script à la main ET dans un fichier de log afin d’avoir des traces lorsque ce script s’exécute automatiquement (via cron par exemple).


Jusqu’à peu ne connaissant pas la commande que je vais décrire ici, lorsque ce besoin se faisait sentir je faisais 2 echo « mon message » : 

echo "mon message"
echo "mon message" >> /ver/log/fichier.log


Ca marche mais c’est pas propre, surtout qu’il existe un outils répondant au besoin dans l’immense arsenal des programmes de base GNU.

Cette commande s’appelle tee.


Cette commande copie son entrée standard vers sa sortie standard et vers un fichier passé en paramètre.


Pour répondre au besoin posé, on peut donc faire :

echo "mon message" | tee -a /var/log/fichier.log


le paramètre -a indique au programme tee qu’il faut écrire dans le fichier ne mode ajout (append) et non pas écraser le contenu du fichier à chaque fois (ce qui peut être pratique)


Et voila c’est tout de même plus élégant que le double echo.


Source :

http://www.libordux.org/doc/cmdline/tips.php#tee

http://pwet.fr/man/linux/commandes/tee



Les commentaires sont fermés.