GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser la commande Linux tee

Présentation

Lorsque l'utilisateur exécute une commande dans un shell interactif Linux, la sortie s'affiche dans le terminal texte. Cependant, il existe des moyens de modifier ce comportement à l'aide de commandes shell supplémentaires connectées dans un pipeline.

Dans ce didacticiel, vous apprendrez à utiliser la commande tee sous Linux pour gérer la sortie d'une commande.

Prérequis

  • Un système exécutant Linux
  • Accès à la ligne de commande ou au terminal
  • Privilèges Sudo

Que fait la commande tee sous Linux ?

Le tee La commande lit l'entrée standard (stdin) et l'écrit à la fois sur la sortie standard (stdout) et sur un ou plusieurs fichiers. tee fait généralement partie d'un pipeline, et n'importe quel nombre de commandes peut le précéder ou le suivre.

commandes tee sous Linux avec exemples

Le tee La commande est utilisée seule ou avec des options supplémentaires. Les sections suivantes répertorient les options disponibles et fournissent des exemples d'utilisation des commandes.

Utilisation de base

La syntaxe de base pour le tee la commande est :

[command] | tee [options] [filename]

L'exemple ci-dessous illustre l'utilisation de tee pour créer un fichier qui stocke des informations sur une interface réseau tout en fournissant la même sortie dans le terminal :

La commande cat confirme que tee écrit avec succès la sortie de ifconfig au fichier example.txt :

Si le fichier utilisé pour la commande existe déjà, tee écrase le contenu précédent du fichier.

Ajouter au fichier donné

L'écrasement du contenu du fichier est le comportement par défaut du tee commande. Utilisez l'argument -a (ou --append ) pour ajouter la sortie de la commande à la fin du fichier.

[command] | tee -a [filename]

Par exemple, utilisez le echo commande pour ajouter une ligne de texte à un fichier :


Confirmez l'ajout réussi avec le cat commande :

Écrire dans plusieurs fichiers

Utilisez tee suivi d'un nombre quelconque de fichiers pour écrire la même sortie dans chacun d'eux :

[command] | tee [options] [filename1] [filename2]...

L'exemple ci-dessous montre l'écriture de la sortie du echo commande à deux fichiers :

Le ls la commande montre que tee fichiers créés avec succès example1.txt et example2.txt .

Masquer la sortie

Dire tee pour stocker la sortie de la commande dans un fichier et ignorer la sortie du terminal, utilisez la syntaxe suivante :

[command] | tee [options] [filename] >/dev/null

Dans l'exemple ci-dessous, tee crée un fichier contenant les données de l'interface réseau, en ignorant la sortie standard :

Rediriger la sortie d'une commande vers une autre

tee ne doit pas nécessairement être la dernière commande du pipeline. Utilisez-le pour transmettre la sortie à une autre commande :

[command] | tee [options] [filename] | [command]

Dans l'exemple suivant, tee stocke la sortie du ls commande à example.txt et transmet le contenu de ce fichier à la commande grep, qui recherche et affiche toutes les instances du mot "exemple":

Ignorer les interruptions

Pour activer tee pour sortir correctement même après l'interruption de la commande précédente, ajoutez l'argument -i (ou --ignore-interrupts ):

[command] | tee -i [filename]

L'exemple suivant montre tee écrire la sortie de la commande ping et terminer l'action avec succès même après ping est interrompu par Ctrl+C :

Utiliser le tee avec Sudo

Pour activer tee pour écrire dans un fichier appartenant à la racine ou dans un fichier appartenant à un autre utilisateur, placez la commande sudo juste avant tee .

[command] | sudo tee [options] [filename]

L'exemple ci-dessous montre une tentative infructueuse d'écrire dans le sudoex.txt appartenant à la racine . Lorsque le sudo commande est ajoutée, l'opération se termine :

Utiliser tee dans l'éditeur Vim

Si vous ouvrez et modifiez un fichier appartenant à la racine dans Vim sans utiliser le sudo commande, la tentative d'enregistrement des modifications génère une erreur :

Pour ignorer cette erreur, saisissez ce qui suit dans Vim :

:w !sudo tee %

Après avoir entré le sudo mot de passe, Vim affiche un avertissement mais écrit les modifications dans le fichier.

Diagnostiquer les erreurs d'écriture dans des non-canaux

Pour instruire tee pour imprimer un message d'erreur lorsque le processus échoue, utilisez le -p argument :

[command] | tee -p [filename]

L'action par défaut de tee -p est de quitter et d'imprimer le message d'erreur immédiatement après avoir détecté l'erreur d'écriture dans un tube. Pour modifier le comportement de la commande en cas d'erreur d'écriture, utilisez le --output-error argument, suivi du mode spécifiant le comportement :

[command] | tee --output-error=[mode] [filename]

Il existe quatre modes possibles :

  • warn – diagnostique les erreurs d'écriture sur n'importe quelle sortie.
  • warn-nopipe - diagnostique les erreurs d'écriture sur n'importe quelle sortie non pipe.
  • exit – se termine en cas d'erreur d'écriture sur n'importe quelle sortie.
  • exit-nopipe - se termine en cas d'erreur d'écriture sur une sortie non pipe.

Utiliser la commande tee avec le script bash

Le tee La commande se trouve souvent dans les scripts bash. Prenons l'exemple suivant :

Le script ci-dessus imprime le message "Hello World" et stocke la sortie dans un fichier journal. L'exécution du script crée un fichier journal dans le tmp dossier. Le journal contient la sortie du script :

Fichiers journaux de surveillance

L'écriture de la sortie du script dans un fichier journal est généralement effectuée avec le > opérateur :

./testbash.sh > testbash.log

La commande ci-dessus crée un fichier journal mais n'écrit rien sur la sortie standard.

Utilisez tee pour créer un fichier journal et voir la sortie dans le terminal :

./testbash.sh | tee testbash.log

Voir l'aide et les informations de version

Voir la version actuelle du tee commande en tapant :

tee --version

Pour les instructions concernant le tee la syntaxe de la commande et les arguments disponibles, utilisez l'argument d'aide de la commande :

tee --help

Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande history sous Linux

  3. Comment utiliser la commande Su sous Linux

  4. Comment utiliser la commande id sous Linux

  5. Comment utiliser la commande "screen" sous Linux

Comment utiliser la commande Linux Top

Comment utiliser la commande fd sur le système Linux

Comment utiliser la commande wget sous Linux ?

Comment utiliser la commande xargs sous Linux ?

Comment utiliser la commande RPM sous Linux

Comment utiliser la commande which sous Linux