Der Linux-te-Befehl wird zum Verketten und Umleiten von Aufgaben verwendet. Sie können die Ausgabe und/oder Fehler in eine Datei umleiten und sie werden nicht auf dem Terminal angezeigt. In ähnlicher Weise kann bei der Verkettung die Ausgabe eines Befehls als Eingabe für den zweiten Befehl und weiter für den dritten Befehl usw. angegeben werden, aber sobald Sie die Ausgabe in eine Datei umgeleitet haben, können Sie sie nicht mehr mit anderen Befehlen verketten.
Linux tee kann verwendet werden, um diese beiden Ergebnisse zusammen zu erzielen, d. h. das Ergebnis in einer Datei zu speichern, während dieselbe Ausgabe mit einem anderen Befehl verkettet wird.
In diesem Tutorial werden wir anhand einiger Beispiele die Verwendung von Linux tee besprechen.
Tee-Befehlssyntax
Der tee-Befehl liest grundsätzlich von der Standardeingabe und schreibt in die Standardausgabe und in Dateien. Es folgt die Syntax des Befehls:
$ command | tee [OPTION]... [FILE]...
Die folgenden Beispiele sollen uns eine bessere Vorstellung davon geben, wie der Befehl funktioniert.
1) Wie man in die Standardausgabe und in eine Datei schreibt
Um in die Standardausgabe und eine Datei zu schreiben, verwenden Sie tee nach einem senkrechten Strich und geben Sie die Datei an.
$ sudo ls /home/smart | tee folders_of_smart.txt
Jetzt können wir zu folders_of_smart.txt
gehen und sehen Sie sich den Inhalt der Datei an, indem Sie den folgenden Befehl eingeben.
$ sudo nano folders_of_smart.txt
Output:
folders_of_smart.txt
foo.txt
output.txt
rootlisting.txt
2) Wie man in eine Datei schreibt und die Ausgabe anhängt
Um die Ausgabe an die vorhandene Datei anzuhängen, verwenden wir -a
Option.
$ sudo echo 'Movies' | tee -a folders_of_smart.txt
Jetzt können wir zu folders_of_smart.txt
gehen und sehen Sie sich den Inhalt der Datei an, indem Sie den folgenden Befehl eingeben.
$ sudo nano folders_of_smart.txt
Output:
folders_of_smart.txt
foo.txt
output.txt
rootlisting.txt
Movies
3) Wie man in mehrere Dateien schreibt
Um in mehrere Dateien zu schreiben, müssen wir nur ihre Namen in der Befehlszeile angeben.
$ sudo ping facebook.com | tee output1.txt output2.txt output3.txt
Jetzt können wir zu output1.txt
gehen , output2.txt
und sehen Sie sich den Inhalt der Datei an, indem Sie den folgenden Befehl eingeben.
$ 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) Wie man die Ausgabe eines Befehls auf einen anderen umleitet
Wir können die Ausgabe auch als Eingabe an andere Befehle weitergeben. Der folgende Befehl listet beispielsweise nicht alle Ordnernamen in folders_of_smart.txt
auf aber durch grep ^o
auflisten Befehlen Sie, dass der Ordner mit dem Buchstaben o beginnt.
$ sudo ls /home/smart | tee folders_of_smart.txt | grep ^o
output:
output1.txt
output2.txt
output3.txt
output.txt
Als weiteres Beispiel listen wir /etc
auf Verzeichnisse und dann wird die Ausgabe in der Datei namens stage1.txt
gespeichert , Diese Ausgabe wird durch den Befehl grep für die Zeilen gefiltert, die mit dem Buchstaben i beginnen. Diese gefilterte Ausgabe wird in der Datei stage2.txt
gespeichert .
Schließlich wird die gefilterte Ausgabe mit sort -r
rückwärts sortiert Befehl. Diese endgültige Ausgabe wird auf dem Terminal angezeigt.
$ 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) Wie man Protokolldateien ansieht und in eine Datei schreibt
Wir können den HTTP2
analysieren Verkehr, der durch einen apache2
geht Server mit tee
Befehl, Die Live-Protokolle können zur Standardausgabe gestreamt und auch zur späteren weiteren Analyse in eine Datei geschrieben werden.
$ sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
6) Wie man mit tee in eine privilegierte Datei schreibt
Wenn wir in eine Datei schreiben wollen, die root
gehört wie folder_of_root.txt
verwenden wir sudo
vor tee
Befehl wie im Beispiel unten.
$ sudo echo 'Documents' | sudo tee -a folder_of_root.txt
Wir werden nach dem Root-Passwort gefragt, geben Sie das Root-Passwort ein und die Änderungen werden in folder_of_root.txt
gespeichert .
7) Verwendung des tee-Befehls mit Python-Skript
Wir können tee
verwenden Befehl mit Python-Skript, um die Ausgabe in einer Datei zu speichern und die Ausgabe auf dem Bildschirm anzuzeigen. Zuerst schreiben wir ein Python-Skript, um die Fläche des Kreises wie unten zu berechnen, und speichern es in area.py
Datei.
# -*- 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))
Wir werden den Wert von radius ändern und die Ausgabe an area.txt
anhängen .
$ 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) Verwendung des tee-Befehls mit Bash-Skript
Wir können tee
verwenden Befehl mit Bash-Skript, um die Ausgabe in einer Datei zu speichern und die Ausgabe auf dem Bildschirm anzuzeigen. Zuerst schreiben wir ein Bash-Skript, um die Ausgabe dieses Befehls pwd
anzuzeigen , ls
und $HOME
wie unten und speichern Sie es in bash.txt
Datei.
#!/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
Der tee-Befehl ist ein sehr erstaunliches Werkzeug, wir können die Standardeingabe lesen und sowohl in die Standardausgabe als auch in eine oder mehrere Dateien schreiben.
Lesen Sie auch:
- Verwendung des Linux Tr-Befehls mit Beispielen