Wenn Sie grundlegende Befehle auf dem Terminal ausführen, wird die Ausgabe normalerweise an das Terminal ausgegeben, d. H. Standardausgabe. Aber was wäre, wenn Sie die Ausgabe auch in einer Datei speichern und auf Standardausgabe ausdrucken könnten? Das macht der tee-Befehl. Der Linux-te-Befehl liest von stdin (Standardeingabe) und schreibt dann in stdout (Standardausgabe) sowie in eine oder mehrere Dateien.
Grundlegende Syntax des tee-Befehls
Der tee-Befehl hat die folgende Syntax.
$-Befehl | tee [ Optionen ] Datei(en)
Lassen Sie uns nun ein paar Beispielverwendungen des Befehls tee ausprobieren.
Grundlegende Verwendung des tee-Befehls
Angenommen, wir möchten die Speicher- und Swap-Nutzung mit free drucken Befehl und speichern Sie die Ausgabe in einer Datei namens memory_usage.txt . Der tee-Befehl würde wie folgt aufgerufen werden.
$ free -h | tee memory_usage.txt
Der tee-Befehl liest aus dem Befehl und speichert die Ausgabe in memory_usage.txt Datei und druckt sie dann auf Standardausgabe.
Zur Bestätigung wurde die Ausgabe in memory_usage.txt gespeichert Datei führen Sie den cat-Befehl wie gezeigt aus.
$ cat memory_usage.txt
Ausgabe in mehrere Dateien schreiben
Außerdem können Sie die Ausgabe wie gezeigt in mehreren Dateien speichern
$-Befehl | tee [ Optionen ] Datei1 Datei2 …
Im folgenden Befehl wird die Zeichenfolge "Hey, Welcome to Linux" wird in den beiden Textdateien gespeichert:file1.txt undfile2.txt
$ echo Hey, Welcome to Linux | tee file1.txt file2.txt
Inhalt an eine Datei anhängen
Normalerweise überschreibt der Befehl tee eine Datei, und dies ist nicht immer wünschenswert, da es wichtige vorhandene Daten löschen kann. Zum Glück können Sie das -a verwenden Option zum Anhängen von Text an eine Datei. Lassen Sie uns das testen.
Zuerst schreiben wir die Ausgabe der Betriebszeit Befehl in die stats.txt Datei wie gezeigt.
$ Betriebszeit | tee stats.txt
Verwenden Sie die Katze Befehl, um dies zu überprüfen.
$ cat stats.txt
Als Nächstes hängen wir die Ausgabe von free -h an Befehl, der unsere Speicher- und Auslagerungsnutzung in die Datei ausgibt.
$ free -h | tee -a stats.txt
Überprüfen Sie noch einmal den Inhalt der stats.txt Datei. Dieses Mal enthält die Datei die Ausgabe der beiden Befehle, wie im folgenden Screenshot angegeben. Das liegt daran, dass wir die Ausgabe von free -h angehängt haben Befehl in die stats.txt Datei und daher wurde der vorhandene Text nicht beeinflusst.
Ausgabe des tee-Befehls unterdrücken
Wenn Sie die Ausgabe des T-Stücks nicht haben möchten Befehl standardmäßig ausgegeben, können Sie ihn nach /dev/null umleiten Dies ist ein spezielles Gerät, das Informationen verwirft.
Nehmen Sie das Beispiel unten, wo wir die Ausgabe von df -Th drucken Befehl in die Textdatei, aber die Ausgabe auf dem Terminal wird unterdrückt.
$ df -Th | tee disk_usage.txt >/dev/null
Te-Befehl Interrupts ignorieren lassen
Manchmal möchten Sie vielleicht einen Befehl stoppen, der ständig ausgeführt wird. In diesem Fall sollten Sie erwägen, den tee-Befehl auch nach der Unterbrechung des Programms ordnungsgemäß zu beenden. Verwenden Sie dazu das -i oder –ignore-interrupts Option, die in der gezeigten Syntax bereitgestellt wird.
$-Befehl | tee -i Dateiname
Der folgende Ping-Befehl sendet kontinuierlich Ping-Anfragen an Googles DNS ( 8.8.8.8 ). Wir haben den Befehl nach 4 aufeinanderfolgenden Ping-Anfragen unterbrochen. Für das T-Stück Befehl zum ordnungsgemäßen Beenden rufen Sie das -i auf Option.
$ ping 8.8.8.8 | tee -i ping_stats.txt
Ohne das -i Option würde die Ausgabe und Zusammenfassung der Statistik nicht gedruckt.
Verwenden Sie den tee-Befehl mit sudo
Wenn Sie Dateien ändern, die dem Root-Benutzer oder einem anderen Login-Benutzer gehören, führt die einfache Verwendung des tee-Befehls ohne Aufrufen des sudo-Befehls zu einem Fehler.
Im Beispiel unten erstellen wir ein neues Repository mit dem Namen anydesk-stable.list für AnyDesk-Anwendung in /etc/apt/sources.list.d Pfad, der für den Root-Benutzer reserviert ist.
$ echo "deb http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list
Wie erwartet, ist der Fehler „Berechtigungen verweigert“ aufgetreten, da wir nicht über die Berechtigung verfügen, eine Datei in diesem Pfad zu erstellen oder zu ändern.
Die Lösung ist, tee voranzustellen mit dem sudo-Befehl wie gezeigt.
$ echo "deb http://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list
In diesem Fall ist der Befehl erfolgreich, nachdem sudo vor tee gesetzt wurde.
Holen Sie sich Hilfe zum Tee-Befehl
Führen Sie den folgenden Befehl aus, um weitere Befehlsoptionen und Unterstützung bei der Verwendung des Befehls tee zu erhalten.
$ tee --help
Erkunden Sie außerdem die Manpages wie gezeigt
$ man tee
Um die Version zu überprüfen, führen Sie Folgendes aus:
$ tee --version
Zusammenfassung
Hier dreht sich alles um den Linux-te-Befehl. Insbesondere liest der Befehl von Standard in ( stdin ) und schreibt danach in Standard out ( stdout ) und Datei(en).