Linux vous permet de stocker la sortie de la commande dans des fichiers comme moyen de redirection de la sortie. Lorsque vous enregistrez la sortie dans un fichier à l’aide de la commande &gt ; ou >&gt ; la sortie est redirigée sans qu’aucune information ne soit affichée sur le terminal.


Mais que se passe-t-il si vous voulez imprimer la sortie à l’écran et la stocker dans un fichier simultanément ? Bien que vous ne puissiez pas le faire avec les opérateurs de redirection de sortie, il est possible de le faire en utilisant la commande tee sous Linux.

Syntaxe de base des commandes

tee est un utilitaire Linux standard utilisé pour diviser la sortie d’une commande entre la sortie standard et les fichiers.

Contrairement à la plupart des commandes Linux, tee est utilisé avec d’autres programmes utilisant un pipe (|). L’opérateur pipe, l’un des nombreux opérateurs de ligne de commande sous Linux, permet à un programme d’utiliser la sortie d’une autre commande comme entrée. Vous avez peut-être utilisé pipe en utilisant grep avec la commande ls ou cat.

La syntaxe de base de la commande tee est la suivante :

 command | tee options filepath 

…où options et chemin d’accès au fichier sont les arguments de la ligne de commande et le chemin du fichier dans lequel vous voulez stocker la sortie.

Diviser la sortie du terminal sous Linux avec tee

L’utilisation la plus simple de tee est de diviser la sortie pour l’afficher dans le terminal et la stocker dans un fichier. Par exemple, pour stocker la sortie de la commande ls dans un fichier texte nommé « sortie.txt, » run :

 ls | tee ./output.txt 

La sortie affichera le contenu du répertoire de travail actuel comme d’habitude. En vérifiant le fichier output.txt, vous constaterez que tee a également enregistré la sortie dans le fichier.

Séparation de la sortie de la commande ls avec tee

Lorsque vous spécifiez le chemin d’un fichier, tee vérifie si le fichier existe. S’il n’en trouve pas, il crée automatiquement le fichier pour vous, ce qui le rend pratique à utiliser dans les scripts shell. Il est utile lorsque vous voulez enregistrer la sortie d’un programme ou d’un script pour une référence ultérieure.

Vous devrez faire précéder la commande tee de sudo pour lire ou stocker des données dans un fichier appartenant à l’utilisateur root.

Si le fichier spécifié contient des données que vous ne voulez pas écraser, utilisez la commande -a drapeau à ajouter la sortie dans le fichier, au lieu d’effacer tout le fichier et de sauvegarder ensuite les données :

 ls | tee -a ./output.txt 

De même, vous pouvez rediriger la sortie vers plusieurs fichiers en spécifiant les chemins, séparés par des espaces simples :

 ls | tee ./output1.txt ./output2.txt 

Parfois, des erreurs inattendues ou des interruptions manuelles (à l’aide de la fonction Ctrl + C ou Ctrl + Z) dans la première commande peut provoquer l’abandon de tee. Pour ignorer de telles interruptions, utilisez l’option -i drapeau :

 ls | tee -i output.txt 

Pour obtenir une aide en ligne de commande concernant tee ou trouver les détails de la version, utilisez la commande –help et –version comme suit :

 tee --help
tee --version

Rediriger la sortie vers une autre commande

Vous pouvez créer une chaîne de sortie en reliant tee à d’autres commandes Linux. Cela permet d’enregistrer la sortie dans le fichier spécifié et de la transmettre à la commande suivante pour traitement.

Utilisez le format suivant pour rediriger la sortie de tee vers une autre commande :

 command | tee filepath | othercommand 

Par exemple, la commande suivante enregistrera la sortie de la commande ls dans le fichier sortie.txt avant de le rediriger finalement vers grep pour une recherche rapide :

 ls | tee output.txt | grep "Documents" 

Globalement, vous pouvez utiliser la commande tee pour jouer avec l’entrée et la sortie standard sous Linux.

Manipulation de la sortie et du texte avec les commandes Linux

La commande tee ajoute des fonctionnalités bien nécessaires aux opérateurs de redirection de sortie standard sous Linux. Vous pouvez même l’utiliser pour manipuler la sortie d’une commande avant de la transmettre à un autre programme.

De même, vous pouvez modifier du texte en utilisant le terminal avec l’aide de certaines commandes standard de Linux. Il faudra peut-être un certain temps pour s’y habituer, mais au final, la manipulation de texte via la ligne de commande vaut la peine d’être apprise par tout administrateur système.