Linux-Befehl tee: Ausgabe gleichzeitig anzeigen und in Dateien speichern
Der Befehl tee
ist ein integriertes Werkzeug unter Linux. Er liest Daten vom Standard-Input (STDIN) und schreibt diese gleichzeitig an den Standard-Output (STDOUT) sowie in eine oder mehrere Dateien. Dank der Unterstützung für Pipelines lässt sich tee
flexibel mit anderen Befehlen kombinieren, was ihn ideal für komplexe Workflows macht. Im Gegensatz zu einer einfachen Umleitung zeigt tee
die Ausgabe in Echtzeit an, was insbesondere bei der Protokollierung oder Fehlersuche in Shell-Skripten von Vorteil ist.
In dieser Anleitung lernst du, wie du tee
zum Schreiben, Verwalten und Umleiten von Ausgaben unter Linux verwenden kannst – inklusive der verfügbaren Optionen.
Syntax des Befehls tee
Die Grundstruktur von tee
sieht folgendermaßen aus:
$ tee [OPTIONEN]... [DATEI]...
In diesem Aufbau steuern die OPTIONEN
das Verhalten des Befehls, während DATEI
die Zieldatei(en) angibt, in die geschrieben wird. Nachfolgend eine Liste gängiger Optionen von tee
:
-a
oder--append
: Hängt die Ausgabe an bestehende Dateien an, ohne diese zu überschreiben.-i
oder--ignore-interrupts
: Ignoriert Abbruchsignale.-h
oder--help
: Zeigt eine Hilfeübersicht mit den verfügbaren Optionen an.-v
oder--version
: Gibt die installierte Version vontee
aus.
Um grundlegende Anwendungsbeispiele zu testen, führe die folgenden Befehle in deinem Linux-Terminal aus.
Beispiel: Hilfeinformationen zu tee anzeigen
$ tee --help
Erwartete Ausgabe:
Usage: tee [OPTION]... [FILE]...
Copy standard input to each FILE, and also to standard output.
-a, --append append to the given FILEs, do not overwrite
-i, --ignore-interrupts ignore interrupt signals
-p diagnose errors writing to non pipes
--output-error[=MODE] set behavior on write error. See MODE below
--help display this help and exit
--version output version information and exit
Beispiel: Installierte Version von tee prüfen
$ tee --version
Beispielausgabe:
tee (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Die Option -i in tee verwenden, um Unterbrechungssignale zu ignorieren
Mit der Option -i
sorgt der tee
-Befehl dafür, dass Prozesse auch bei Unterbrechungssignalen wie Strg + C nicht gestoppt werden:
$ tee -i
Diese Option eignet sich besonders für lang laufende Prozesse, bei denen eine unbeabsichtigte Unterbrechung vermieden werden soll. Um tee
bei aktiver -i
-Option zu beenden, drücke Strg + Z.
Dateien mit dem tee-Befehl unter Linux erstellen
Mit tee
kannst du sowohl neue Dateien anlegen als auch bestehende Dateien bearbeiten. Wird die Option -a
(append) genutzt, werden Inhalte an bestehende Dateien angehängt. Ohne diese Option überschreibt tee
die Datei. So funktioniert das Erstellen neuer Dateien mit tee
:
Erstelle eine Datei output.txt
mit dem Text “Hello World”:
$ echo "Hello World" | tee output.txt
Ausgabe:
Hello World
Überprüfe den Inhalt der Datei output.txt
mit cat
:
$ cat output.txt
Ausgabe:
Hello World
Erstelle nun mit dem Inhalt von output.txt
eine weitere Datei merged.txt
:
$ cat output.txt | tee merged.txt
Ausgabe:
Hello World
Dateien mit dem tee-Befehl überschreiben
Standardmäßig überschreibt tee
vorhandene Dateien, sofern nicht die -a
-Option verwendet wird. So lässt sich der Inhalt einer Datei mit tee
überschreiben:
Prüfe zunächst den aktuellen Inhalt der Datei output.txt
:
$ cat output.txt
Ausgabe:
Hello World
Überschreibe jetzt den Inhalt von output.txt
mit dem neuen Text “Greetings”:
$ echo "Greetings" | tee output.txt
Erwartete Ausgabe:
Greetings
Überprüfe abschließend, ob der neue Inhalt korrekt gespeichert wurde:
$ cat output.txt
Ausgabe:
Greetings
Inhalte an Dateien anhängen mit dem tee-Befehl
Wenn du Inhalte zu einer bestehenden Datei hinzufügen möchtest, ohne deren vorhandenen Inhalt zu überschreiben, verwende tee
mit der Option -a
(append). So funktioniert das Anhängen von Text mit tee
:
Füge den Text “Hello” an das Ende der Datei output.txt
an:
$ echo "Hello" | tee -a output.txt
Ausgabe:
Hello
Überprüfe den Inhalt von output.txt
, um sicherzustellen, dass die neue Zeile angehängt wurde:
$ cat output.txt
Ausgabe:
Greetings
Hello
In mehrere Dateien gleichzeitig schreiben mit dem tee-Befehl
Mit dem tee
-Befehl kannst du denselben Inhalt gleichzeitig in mehrere Dateien schreiben. Das ist besonders praktisch, wenn du Ausgaben protokollieren und parallel anzeigen möchtest.
Um Daten in mehrere Dateien zu schreiben, gib einfach die gewünschten Dateinamen hintereinander an:
$ tee <datei1> <datei2> <datei3> ...
Beispiel: Erstelle zwei Dateien mit dem gemeinsamen Inhalt “The Data Backup Process is Complete”:
$ echo "The Data Backup Process is Complete" | tee file1.txt file2.txt
Prüfe den Inhalt beider Dateien, um sicherzustellen, dass die Daten korrekt geschrieben wurden:
$ cat file1.txt file2.txt
Ausgabe:
The Data Backup Process is Complete
The Data Backup Process is Complete
Diese Ausgabe bestätigt, dass tee
den Inhalt erfolgreich in file1.txt
und file2.txt
kopiert hat. Du kannst tee
nutzen, um Inhalte zu erstellen, zu überschreiben oder an mehrere Dateien gleichzeitig anzuhängen.
Mehrzeiligen Inhalt mit tee und Heredoc in mehrere Dateien schreiben
Um mehrere Zeilen Text gleichzeitig in verschiedene Dateien zu schreiben, kannst du tee
mit der Heredoc-Syntax kombinieren. So funktioniert das:
$ tee test1.txt test2.txt <<EOF
Backup Report - File 1 and File 2
2024 Backup Summary
EOF
Die Notation <<EOF
dient dazu, mehrzeiligen Text zu definieren, der von tee
gleichzeitig in test1.txt
und test2.txt
geschrieben wird.
Überprüfe den Inhalt beider Dateien, um das Ergebnis zu verifizieren:
$ cat test1.txt test2.txt
Ausgabe:
Backup Report - File 1 and File 2
2024 Backup Summary
Backup Report - File 1 and File 2
2024 Backup Summary
tee-Befehl mit erhöhten Rechten (sudo) verwenden
Um Dateien zu ändern, die nur mit Root-Rechten bearbeitet werden dürfen, verwende tee
in Kombination mit sudo
. Hier ein Beispiel, wie du einen Eintrag zur /etc/hosts
-Datei hinzufügst:
$ echo "192.0.2.1 mycustomhost.local" | sudo tee -a /etc/hosts
Dieser Befehl ergänzt die IP-Zuweisung 192.0.2.1 mycustomhost.local
in der Datei /etc/hosts
. Da die Datei Root-Zugriff erfordert, ist sudo
notwendig – ohne sudo wird eine Fehlermeldung angezeigt.
Ausgabe:
192.0.2.1 mycustomhost.local
Überprüfe den Inhalt der Datei /etc/hosts
, um die Änderung zu bestätigen:
$ cat /etc/hosts
Beispielausgabe:
127.0.0.1 localhost
...
::1 localhost ip6-localhost ip6-loopback
...
192.0.2.1 mycustomhost.local
tee mit anderen Befehlen kombinieren: Ausgabe filtern und umleiten
Der tee
-Befehl lässt sich hervorragend mit anderen Linux-Befehlen kombinieren, um Daten in einer Pipeline anzuzeigen, zwischenzuspeichern oder weiterzuleiten. Im Folgenden einige typische Anwendungsfälle:
ls-Ausgabe in eine Datei umleiten
Führe den Befehl ls
aus und leite die Ausgabe mit tee
in die Datei list.txt
um:
$ ls | tee list.txt
Überprüfe den Inhalt der Datei list.txt
:
$ cat list.txt
Beispielausgabe:
file1.txt
file2.txt
list.txt
output.txt
test1.txt
test2.txt
Ausgabe mit grep filtern und umleiten
Nutze grep
zwischen tee
und der Umleitung, um nur bestimmte Inhalte weiterzugeben – z. B. alle .txt
-Dateien:
$ ls | tee intermediate.txt | grep .txt > final.txt
Hier wird die Ausgabe von ls
zunächst in intermediate.txt
gespeichert, danach durch grep
gefiltert und schließlich in final.txt
umgeleitet.
Überprüfe beide Dateien:
$ cat intermediate.txt
$ cat final.txt
Erwartete Ausgabe:
final.txt
intermediate.txt
list.txt
merged.txt
output.txt
Erweiterte Filterung mit awk und sort
Kombiniere tee
mit awk
und sort
, um Prozessdaten zu verarbeiten und sortiert in einer Datei zu speichern:
$ ps aux | tee process_list.txt | awk '{print $1, $2}' | sort | tee sorted_process_list.txt
Der obige Befehl speichert die vollständige Prozessliste in process_list.txt
, filtert Benutzername und PID heraus, sortiert das Ergebnis und schreibt es in sorted_process_list.txt
.
Überprüfe den Inhalt beider Dateien:
$ cat process_list.txt
$ cat sorted_process_list.txt
Fazit
In dieser Anleitung hast du gelernt, wie du den tee
-Befehl unter Linux vielseitig einsetzt – von der Dateierstellung bis hin zu komplexen Pipe-Kombinationen. Du kannst damit Ausgaben erstellen, überschreiben, anhängen oder gleichzeitig protokollieren und anzeigen. Weitere Informationen findest du auf der Manpage:
$ man tee