Lorsque vous exécutez des commandes de base sur le terminal, la sortie est généralement imprimée sur le terminal, c'est-à-dire la sortie standard. Mais que diriez-vous si vous pouviez également enregistrer la sortie dans un fichier et l'imprimer en sortie standard ? C'est ce que fait la commande tee. La commande Linux tee lit à partir de stdin (entrée standard) puis écrit dans stdout (sortie standard) ainsi que dans un fichier ou plusieurs fichiers.
Syntaxe de base de la commande tee
La commande tee prend la syntaxe suivante.
commande $ | tee [options] fichier(s)
Échantillons maintenant quelques exemples d'utilisation de la commande tee.
Utilisation de base de la commande tee
Supposons que nous voulions imprimer la mémoire et échanger l'utilisation en utilisant le gratuit commande et enregistrez la sortie dans un fichier appelé memory_usage.txt . La commande tee serait invoquée comme suit.
$ free -h | tee memory_usage.txt
La commande tee lit à partir de la commande, enregistre la sortie dans memory_usage.txt fichier, puis l'imprime en sortie standard.
Pour confirmer que la sortie a été enregistrée dans memory_usage.txt fichier exécutez la commande cat comme indiqué.
$ cat memory_usage.txt
Écrire la sortie dans plusieurs fichiers
De plus, vous pouvez enregistrer la sortie dans plusieurs fichiers comme indiqué
commande $ | tee [ options ] fichier1 fichier2 …
Dans la commande ci-dessous, la chaîne "Hey, Welcome to Linux" est enregistré dans les deux fichiers texte :file1.txt etfichier2.txt
$ echo Hey, Welcome to Linux | tee file1.txt file2.txt
Ajouter du contenu à un fichier
Habituellement, la commande tee écrase un fichier, et ce n'est pas toujours souhaitable car elle peut effacer des données existantes qui sont cruciales. Heureusement, vous pouvez utiliser le -a option pour ajouter du texte à un fichier. Testons cela.
Tout d'abord, nous allons écrire la sortie du uptime commande au stats.txt fichier comme indiqué.
$ disponibilité | tee stats.txt
Utilisez le chat commande pour vérifier cela.
$ cat stats.txt
Ensuite, nous ajouterons la sortie du free -h commande qui imprime notre utilisation de la mémoire et de l'échange dans le fichier.
$ free -h | tee -a stats.txt
Encore une fois, vérifiez le contenu du stats.txt dossier. Cette fois-ci, le fichier portera la sortie des deux commandes comme indiqué dans la capture d'écran ci-dessous. C'est parce que nous avons ajouté la sortie du free -h commande au stats.txt fichier et donc le texte existant n'a pas été affecté.
Supprimer la sortie de la commande tee
Si vous ne souhaitez pas avoir la sortie du té commande imprimée sur la sortie standard, vous pouvez la rediriger vers /dev/null qui est un appareil spécial qui supprime les informations qui lui sont transmises.
Prenons l'exemple ci-dessous où nous imprimons la sortie du df -Th commande au fichier texte mais en supprimant la sortie sur le terminal.
$ df -Th | tee disk_usage.txt >/dev/null
Laisser la commande tee ignorer les interruptions
Parfois, vous souhaiterez peut-être arrêter une commande qui s'exécute en continu. Lorsque cela se produit, vous pouvez envisager de faire en sorte que la commande tee se termine correctement même après l'interruption du programme. Pour ce faire, utilisez le -i ou –ignore-interrupts option fournie dans la syntaxe indiquée.
commande $ | tee -i nom de fichier
La commande ping ci-dessous envoie en continu des requêtes ping au DNS de Google ( 8.8.8.8 ). Nous avons interrompu la commande après 4 requêtes ping successives. Pour le tee commande pour quitter en douceur, appelez le -i option.
$ ping 8.8.8.8 | tee -i ping_stats.txt
Sans le -i option, la sortie et le résumé des statistiques ne seraient pas imprimés.
Utiliser la commande tee avec sudo
Lors de la modification de fichiers appartenant à l'utilisateur root ou à un autre utilisateur de connexion, le simple fait d'utiliser la commande tee sans appeler la commande sudo génère une erreur.
Dans l'exemple ci-dessous, nous créons un nouveau référentiel appelé anydesk-stable.list pour l'application AnyDesk dans /etc/apt/sources.list.d chemin réservé à l'utilisateur root.
$ echo "deb http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list
Comme prévu, nous avons rencontré une erreur "autorisations refusées" car nous n'avons pas les autorisations nécessaires pour créer ou modifier un fichier dans ce chemin.
La solution est de précéder tee avec la commande sudo comme indiqué.
$ echo "deb http://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list
A cette occasion, la commande est un succès après avoir placé sudo avant tee.
Obtenir de l'aide avec la commande tee
Pour plus d'options de commande et d'assistance dans l'utilisation de la commande tee, exécutez la commande ci-dessous.
$ tee --help
De plus, explorez les pages de manuel comme indiqué
$ man tee
Pour vérifier la version, exécutez :
$ tee --version
Résumé
Il s'agit de la commande Linux tee. Notamment, la commande lit à partir de l'entrée standard ( stdin ) et écrit ensuite dans la sortie standard ( stdout ) et le(s) fichier(s).