La commande tee permet de lire depuis l'entrée standard et d'écrire la sortie simultanément dans un fichier ET dans la sortie standard. C'est l'outil idéal pour "espionner" un pipe tout en sauvegardant le résultat.
Imaginons un té (T) de plomberie : l'eau arrive d'un côté, se divise en deux directions. tee fait pareil avec les données : elles arrivent du pipe, et une copie part vers le fichier pendant que l'autre continue son chemin.
# Schéma de fonctionnementcommande1 | tee fichier.txt | commande2Le contenu est écrit dans fichier.txt ET passe à commande2.
# Sauvegarder la liste des fichiers ET l'afficherls -la | tee liste_fichiers.txt# Écrire dans un fichier ET continuer le pipeecho "Bonjour le monde" | tee salut.txt | wc -cCe comando écrit "Bonjour le monde" dans salut.txt ET le compte avec wc -c.
Par défaut, tee écrase le fichier. Avec -a, il ajoute à la fin :
# Ajouter au lieu d'écraserecho "Ligne 1" | tee log.txtecho "Ligne 2" | tee -a log.txtcat log.txttee est très utile quand vous devez écrire dans un fichier root avec sudo :
# Ajouter une ligne à un fichier systèmeecho "127.0.0.1 monserveur" | sudo tee -a /etc/hostsCette technique est plus propre que sudo sh -c 'echo ... >> fichier'.
# Ajouter une variable d'environnementecho "export MON_APPLI=prod" | sudo tee -a /etc/environmenttee peut envoyer le contenu vers plusieurs fichiers simultanément :
# Écrire dans plusieurs fichiers d'un coupecho "Données de backup" | tee fichier1.txt fichier2.txt fichier3.txt# Logger un message ET l'afficherecho "Installation terminée" | tee /dev/tty | logger# Sauvegarder les lignes filtréescat logs.txt | tee temp.txt | grep "ERROR"# Sauvegarder ET traiterecho "fichier1.txt fichier2.txt" | tr ' ' '\n' | tee liste.txt | xargs wc -l# Écrire dans stdout ET stderrcommande 2>&1 | tee /dev/stderr | autre_commande# Écrire uniquement dans le fichier, sans stdoutcommande | tee fichier.txt > /dev/null# Ajouter la date aux lignesecho "Événement important" | tee -a journal.txtdate | tee -a journal.txt# Capturer la sortie ET l'affichersudo apt install mon-logiciel 2>&1 | tee install_log.txt# Sauvegarder ET continuer le traitementps aux | tee processus.txt | grep python# Créer un fichier de configuration rapidementcat <| Option | Description |
|---|---|
-a, --append | Ajouter au fichier au lieu d'écraser |
-i, --ignore-interrupts | Ignorer les signaux d'interruption |
liste.txt contenant le résultat de ls -R ~ tout en l'affichant à l'écran.tee -a pour ajouter plusieurs lignes de texte à un même fichier.ps filtrée avec grep, puis utilisez tee pour la sauvegarder ET l'afficher.tee pour logger les étapes d'une installation dans un fichier.tee est une commande simple mais puissante. Elle permet de dupliquer un flux de données sans interrompre le pipe, ce qui est idéal pour le débogage, la sauvegarde de résultats intermédiaires, ou l'écriture dans des fichiers protégés. Associé à sudo, il devient un outil indispensable pour administrer un système Linux.