
La commande Linux tee est utilisée pour le chaînage et la redirection des tâches, vous pouvez rediriger la sortie et/ou les erreurs vers un fichier et cela ne sera pas affiché sur le terminal. De même, en utilisant le chaînage, la sortie d'une commande peut être donnée comme entrée à la deuxième commande et ensuite à la troisième commande et ainsi de suite, mais une fois que vous redirigez la sortie vers un fichier, vous ne pouvez pas la chaîner avec d'autres commandes.
Linux tee peut être utilisé pour obtenir ces deux résultats ensemble, c'est-à-dire stocker le résultat dans un fichier tout en enchaînant la même sortie à une autre commande.
Dans ce didacticiel, nous expliquerons comment utiliser Linux tee avec quelques exemples.
Syntaxe de la commande Tee
La commande tee lit essentiellement à partir de l'entrée standard et écrit dans la sortie et les fichiers standard. Voici la syntaxe de la commande :
$ command | tee [OPTION]... [FILE]...
Les exemples suivants devraient nous donner une meilleure idée du fonctionnement de la commande.
1) Comment écrire sur la sortie standard et un fichier
Pour écrire sur la sortie standard et un fichier, utilisez tee après un tube et spécifiez le fichier.
$ sudo ls /home/smart | tee folders_of_smart.txt
Nous pouvons maintenant accéder à folders_of_smart.txt
et voir le contenu du fichier en tapant la commande ci-dessous.
$ sudo nano folders_of_smart.txt
Output:
folders_of_smart.txt
foo.txt
output.txt
rootlisting.txt
2) Comment écrire dans un fichier et ajouter une sortie
Pour ajouter la sortie au fichier existant, nous utiliserons -a
option.
$ sudo echo 'Movies' | tee -a folders_of_smart.txt
Nous pouvons maintenant accéder à folders_of_smart.txt
et voir le contenu du fichier en tapant la commande ci-dessous.
$ sudo nano folders_of_smart.txt
Output:
folders_of_smart.txt
foo.txt
output.txt
rootlisting.txt
Movies
3) Comment écrire dans plusieurs fichiers
Pour écrire dans plusieurs fichiers, il suffit de mentionner leurs noms dans la ligne de commande.
$ sudo ping facebook.com | tee output1.txt output2.txt output3.txt
Nous pouvons maintenant accéder à output1.txt
, output2.txt
et voir le contenu du fichier en tapant la commande ci-dessous.
$ sudo nano output1.txt
$ sudo nano output2.txt
Output:
PING facebook.com(edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de)) 5$
64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$
64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$
4) Comment rediriger la sortie d'une commande vers une autre
Nous pouvons également transmettre la sortie en entrée à d'autres commandes. Par exemple, la commande suivante ne listera pas tous les noms de dossier dans folders_of_smart.txt
mais liste via grep ^o
commande le dossier commençant par la lettre o.
$ sudo ls /home/smart | tee folders_of_smart.txt | grep ^o
Sortie output:
output1.txt
output2.txt
output3.txt
output.txt
Autre exemple, nous allons lister /etc
répertoires, puis la sortie est stockée dans le fichier nommé stage1.txt
, Cette sortie est filtrée via la commande grep pour les lignes commençant par la lettre i, Cette sortie filtrée est stockée dans le fichier stage2.txt
.
Enfin, la sortie filtrée est triée à l'envers à l'aide de sort -r
commande. Cette sortie finale est affichée sur le terminal.
$ ls /etc | tee stage1.txt | grep ^i | tee stage2.txt | sort -r
output:
issue.net
issue
iscsi
iproute2
inputrc
initramfs-tools
init.d
init
5) Comment consulter les fichiers journaux et écrire dans un fichier
Nous pouvons analyser le HTTP2
le trafic passant par un apache2
serveur en utilisant tee
commande, les journaux en direct peuvent être diffusés sur la sortie standard et également écrits dans un fichier pour une analyse ultérieure ultérieure.
$ sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
6) Comment écrire dans un fichier privilégié en utilisant tee
Lorsque nous voulons écrire dans un fichier appartenant à root
comme folder_of_root.txt
, nous utiliserons sudo
avant tee
commande comme dans l'exemple ci-dessous.
$ sudo echo 'Documents' | sudo tee -a folder_of_root.txt
On nous demandera le mot de passe root, entrez le mot de passe root et les modifications seront enregistrées dans folder_of_root.txt
.
7) Comment utiliser la commande tee avec le script Python
Nous pouvons utiliser tee
commande avec un script python pour stocker la sortie dans un fichier et afficher la sortie à l'écran. Tout d'abord, nous allons écrire un script python pour calculer la surface du cercle comme ci-dessous et l'enregistrer dans area.py
fichier.
# -*- coding: utf-8 -*-
"""This script calculate the area of circle"""
from math import pi as pi
from math import ceil as ceil
radius = 2.5
area = pi * radius**2
print('The area of circle is', ceil(area))
Nous allons changer la valeur du rayon et ajouter la sortie à area.txt
.
$ python area.py | tee -a area.txt
Output
('The area of circle is for radius 2', 13.0)
('The area of circle is for radius 2.5', 20.0)
('The area of circle is for radius 3', 29.0)
('The area of circle is for radius 3.5', 39.0)
8) Comment utiliser la commande tee avec le script bash
Nous pouvons utiliser tee
commande avec un script bash pour stocker la sortie dans un fichier et afficher la sortie à l'écran. Tout d'abord, nous allons écrire un script bash pour afficher la sortie de ces commandes pwd
, ls
et $HOME
comme ci-dessous et enregistrez-le dans bash.txt
fichier.
#!/bin/bash
echo "`pwd`";
echo "`ls`";
echo "$HOME";
$ ./bash.txt | tee smart.txt
Output
/media/disk
bash.txt
flask.pdf
smart.py
smart.txt
VirtualBox-5.2-5.2.14_123301_el6-1.x86_64.rpm
/home/smart
La commande tee est un outil très étonnant, nous pouvons lire l'entrée standard et l'écrire à la fois sur la sortie standard et sur un ou plusieurs fichiers.
Lire aussi :
- Comment utiliser la commande Linux Tr avec des exemples