Linux

Comment utiliser la commande Tee sous Linux

Si vous utilisez des tuyaux et des redirections sous votre shell Linux, il est probable que vous deviez également parfois utiliser l’utilitaire tee.

Que fait le tee-shirt ?

Une commande telle que

affichera le contenu de votre répertoire actuel. En d’autres termes, il affiche ces contenus sur stdout (sortie standard), qui est normalement votre écran, ou pour être plus précis, votre affichage de terminal virtuel.

Une commande comme

n’affichera rien sur votre écran. C’est parce que le signe > redirige toutes les sorties vers un fichier au lieu de les afficher sur stdout. file123 sera maintenant rempli avec le contenu qui était précédemment affiché sur votre écran.

Pour afficher le contenu de votre répertoire à l’écran et l’écrire dans un fichier, vous utilisez deux commandes. Avec tee, vous pouvez faire ces deux choses à la fois.

Pourquoi utiliser Tee si vous pouvez exécuter une commande similaire deux fois ?

Dans l’exemple ci-dessus, vous n’avez évidemment pas besoin de tee si vous pouvez exécuter ls normalement, puis l’exécuter à nouveau et rediriger la sortie vers un fichier. Cependant, vous rencontrerez des situations où la sortie sera unique. Imaginez un scénario où vous essayez de diagnostiquer un problème. Vous exécutez le diagnostic | tee error.log. Les erreurs que vous obtenez peuvent être uniques. Vous voulez qu’ils soient affichés à l’écran afin que vous puissiez voir ce qui se passe pendant que vous testez les choses. Mais vous souhaitez également que ces erreurs soient enregistrées dans un fichier, afin que vous puissiez les examiner plus tard ou coller la sortie dans un forum de discussion et interroger les gens à ce sujet.

Psssssst :  Comment télécharger un terminal Linux ?

Une autre situation, souvent rencontrée, lorsque vous pourriez avoir besoin de tee, est la suivante : vous voulez écrire la sortie d’une commande dans un emplacement où seul l’utilisateur root peut lire ou écrire. Cela ne fonctionnera pas.

Ensuite, vous pouvez penser : « Eh bien, bien sûr, utilisez simplement sudo ! » Et vous serez surpris que cela ne fonctionne pas non plus :

En effet, après l’exécution de sudo blkid, vous êtes toujours connecté en tant qu’utilisateur non root habituel. Et votre shell (généralement bash) essaie d’écrire dans /root/somefile avec vos informations d’identification d’utilisateur habituelles. Pour résoudre ce problème, vous pouvez utiliser tee :

Ajout de texte et erreurs de redirection

tee est une commande utile mais simple ; une commande de base | tee somefile suffira la plupart du temps. Cependant, vous pouvez rencontrer deux scénarios qui nécessitent ces conseils.

La première chose à savoir est que tee, par défaut, écrase toujours un fichier. Si tu cours

puis

la deuxième commande écrasera le contenu d’un fichier et vous ne verrez que le contenu de la dernière commande exécutée. Pour modifier ce comportement, vous pouvez ajouter du texte au lieu de l’écraser. Pour ce faire, utilisez simplement le commutateur de commande -a.

Psssssst :  Comment désinstaller une mise à jour Windows déjà téléchargée ?

La deuxième chose à savoir est que toutes les sorties ne sont pas les mêmes. Les messages d’erreur sont traités différemment, et bien qu’ils apparaissent à l’écran, ils ne sont pas considérés comme des sorties standard, ils ne seront donc pas détectés par tee. (Ils sont considérés comme stderr.) Voici un exemple sur grep.

Il affichera quelque chose comme l’image suivante.

Les messages d’autorisation refusée sont écrits dans stderr. La seule chose écrite sur stdout est le texte en surbrillance. C’est pourquoi vous remarquerez que le contenu de « somefile » est ce qui est montré dans l’image ci-dessous.

Contenu du fichier Tee Grep

Dans ce cas, où grep est utilisé pour rechercher du texte, il est utile que les messages d’erreur ne soient pas redirigés vers le fichier. Ils rempliraient simplement le fichier de déchets inutiles. Vous voulez seulement voir les résultats trouvés. Mais lorsque vous avez besoin des messages d’erreur, utilisez 2>&1, qui redirige stderr vers stdout.

Avec cette commande, vous remarquerez qu’un fichier contient désormais également les messages d’erreur.

Conclusion

Espérons que ce didacticiel couvre tout ce dont vous avez besoin pour tirer le meilleur parti de la commande tee. Mais si vous rencontrez une situation où vous êtes coincé avec un tee, laissez un commentaire ci-dessous et nous pourrons peut-être vous aider.

Cet article est-il utile ? Oui Non

Bouton retour en haut de la page

Adblock détecté

Veuillez désactiver votre bloqueur de publicités pour pouvoir visualiser le contenu de la page. Pour un site indépendant avec du contenu gratuit, c’est une question de vie ou de mort d’avoir de la publicité. Merci de votre compréhension! Merci