Linux : maîtriser tee, redirections et sudo
Apprenez à utiliser tee sous Linux pour afficher et enregistrer la sortie d’une commande, y compris avec redirections, append et sudo.

- Difficulté
- Facile
La commande tee est l’un des outils les plus utiles de la ligne de commande Linux quand vous voulez voir ce qu’une commande produit tout en gardant une copie dans un fichier. Elle s’insère au milieu d’un pipeline, ce qui la rend pratique pour les tests, les journaux temporaires, le débogage et les commandes à exécuter avec ou sans privilèges élevés.
Dans ce tutoriel, vous allez manipuler tee pas à pas avec des exemples simples. Vous verrez comment enregistrer la sortie standard, comment ajouter au lieu d’écraser, comment capter aussi les erreurs, et surtout comment utiliser tee avec sudo quand une simple redirection > ne suffit pas.
Prérequis
- Un terminal Linux ouvert.
- Un shell courant comme bash, zsh ou sh.
- Un accès à
sudopour les étapes qui modifient des fichiers protégés. - Le droit d’écrire dans votre dossier personnel pour les exemples de base.
Matériel nécessaire
- Terminal Linux
- Commande tee
- Commande sudo
- Fichiers de test dans le dossier personnel
Étapes
Lancer une commande et dupliquer sa sortie
Commencez par exécuter une commande simple et envoyez sa sortie vers
tee. Par exemple :date | tee sortie.txtLa date s’affiche dans le terminal et elle est aussi écrite dans
sortie.txt. Vérifiez ensuite le contenu du fichier avec :cat sortie.txtÉcraser volontairement un fichier existant
Relancez une autre commande vers le même fichier pour observer le comportement par défaut. Essayez par exemple :
uname -a | tee sortie.txtLe fichier
sortie.txtcontient maintenant la nouvelle sortie, à la place de l’ancienne.teeécrase le fichier cible s’il existe déjà.Ajouter une sortie sans effacer l’ancienne
Utilisez l’option
-apour ajouter du contenu à la fin du fichier. Tapez par exemple :whoami | tee -a sortie.txtAffichez ensuite le fichier avec
cat sortie.txt. Vous verrez que la nouvelle ligne a été ajoutée après le contenu précédent au lieu de le remplacer.Enregistrer plusieurs fichiers en une seule commande
teepeut écrire dans plusieurs fichiers à la fois. Testez avec :pwd | tee fichier1.txt fichier2.txtLa sortie s’affiche à l’écran et elle est copiée dans
fichier1.txtetfichier2.txt. Vérifiez les deux fichiers aveccat fichier1.txtpuiscat fichier2.txt.Insérer tee au milieu d’un pipeline

Placez
teeentre deux commandes pour conserver un résultat intermédiaire. Essayez :ls -1 /etc | tee liste-etc.txt | headVous voyez seulement les premières lignes à l’écran grâce à
head, maisliste-etc.txtcontient l’ensemble de la sortie transmise àtee.Capturer aussi les messages d’erreur
Par défaut,
teene traite que la sortie standard. Pour enregistrer aussi les erreurs, redirigez la sortie d’erreur vers la sortie standard avanttee:ls /tmp /chemin/inexistant 2>&1 | tee erreurs-et-sortie.txtLa sortie normale et le message d’erreur s’affichent ensemble dans le terminal et sont aussi écrits dans
erreurs-et-sortie.txt.Comparer tee avec une redirection simple
Testez maintenant une redirection classique pour bien voir la différence. Exécutez :
echo "bonjour" > simple.txtRien ne s’affiche à l’écran, car la sortie est envoyée directement dans le fichier. Avec
tee, le contenu aurait été visible dans le terminal et enregistré en même temps.Constater l’échec d’une redirection avec sudo
Essayez une commande typique qui surprend souvent les débutants :
sudo echo "test" > /etc/test-tee.confSelon vos droits et l’existence du fichier, la redirection peut échouer avec une erreur de permission. Le point important est que
sudone s’applique ici qu’àecho, pas à la redirection gérée par le shell.Écrire dans un fichier protégé avec sudo tee

Utilisez plutôt un pipe vers
sudo tee. Pour écrire dans un fichier protégé, employez par exemple :echo "test" | sudo tee /etc/test-tee.confLe texte s’affiche dans le terminal et il est écrit dans le fichier cible avec les privilèges de
sudo. Ici, c’estteequi ouvre le fichier, pas votre shell non privilégié.Ajouter à un fichier protégé avec sudo tee -a
Pour compléter un fichier protégé sans effacer son contenu, combinez
sudoet-a. Exemple :echo "ligne ajoutée" | sudo tee -a /etc/test-tee.confLa nouvelle ligne est ajoutée à la fin du fichier. Cette méthode est souvent plus sûre qu’une réécriture complète quand vous ne devez insérer qu’une ligne.
Injecter plusieurs lignes proprement
Quand vous devez écrire plusieurs lignes, utilisez une commande qui produit un texte structuré. Par exemple :
printf 'ligne 1 ligne 2 ' | tee notes.txtLe résultat s’affiche proprement sur deux lignes et il est enregistré tel quel dans le fichier. La même approche fonctionne avec
sudo teepour un fichier protégé.Vérifier le résultat avant de continuer
Après chaque écriture, relisez le fichier concerné avec une commande adaptée. Vous pouvez utiliser :
cat notes.txtcat /etc/test-tee.confCette vérification simple permet de confirmer que vous avez bien écrit au bon endroit, avec le bon mode, sans écrasement involontaire.
Réutiliser tee pour journaliser une commande longue

Terminez avec un usage très concret : garder une trace d’une commande longue tout en la surveillant. Par exemple :
find /etc -maxdepth 1 | tee journal-find.txtVous suivez la progression dans le terminal tout en conservant un journal local. Cette habitude est utile pour les inventaires, les diagnostics et les essais reproductibles.
Erreurs fréquentes & dépannage
- Oublier que
teeécrase par défaut : sans-a, le fichier cible est remplacé. - Confondre sortie standard et erreurs : un simple
| tee fichierne récupère pas la sortie d’erreur sans2>&1. - Croire que
sudo commande > fichiersuffit : la redirection est gérée par le shell, pas parsudo. - Modifier un fichier système réel pour tester : faites d’abord vos essais dans votre dossier personnel ou sur un fichier de démonstration.
- Oublier de relire le fichier : un
catde contrôle évite de propager une erreur simple.
Astuces & pour aller plus loin
- Placez
teeau milieu d’un pipeline pour conserver une étape intermédiaire sans casser la chaîne de commandes. - Ajoutez
-adès que votre intention est de compléter un fichier plutôt que de le remplacer. - Avec un fichier protégé, préférez
echo "..." | sudo tee fichierà une redirection directe. - Si l’affichage du texte écrit vous gêne, terminez par
> /dev/nullaprèstee. - Pour un contenu sur plusieurs lignes, utilisez
printfafin de contrôler précisément les retours à la ligne.
Questions fréquentes
À quoi sert exactement tee ?
La commande tee lit l’entrée standard, l’affiche sur la sortie standard et l’écrit en même temps dans un ou plusieurs fichiers.
Quelle différence entre tee et une redirection > ?
Une redirection avec > envoie la sortie vers un fichier sans l’afficher. tee permet de voir la sortie à l’écran tout en l’enregistrant.
Comment ajouter au lieu d’écraser un fichier ?
Utilisez l’option -a, par exemple : commande | tee -a fichier.txt.
Pourquoi sudo echo "test" > /etc/fichier peut échouer ?
Parce que la redirection > est traitée par le shell avant l’exécution de la commande. sudo ne s’applique donc pas à l’ouverture du fichier par le shell.
Comment écrire dans un fichier protégé avec tee ?
Envoyez le texte vers sudo tee, par exemple : echo "test" | sudo tee /etc/fichier.
Comment enregistrer aussi les erreurs d’une commande ?
Redirigez la sortie d’erreur vers la sortie standard avant tee, par exemple : commande 2>&1 | tee journal.txt.
Conclusion
Vous savez maintenant utiliser tee pour afficher et enregistrer la sortie d’une commande en même temps, que ce soit dans un cas simple, dans un pipeline ou avec des messages d’erreur. Vous avez aussi vu le point essentiel sur sudo : pour écrire dans un fichier protégé, il faut donner à tee les privilèges nécessaires, pas seulement à la commande qui produit le texte.
En pratique, retenez trois réflexes : tee pour voir et garder, tee -a pour ajouter, et sudo tee pour les fichiers protégés. Avec ces trois modèles, vous couvrirez la grande majorité des besoins courants autour des redirections en ligne de commande Linux.