tee
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Hinweis:
Dieser Artikel beschreibt die alte Implementation des Programms. Ab Ubuntu 24.04 ist auch mit Paket rust-coreutils 🇬🇧 eine neue Implementierung in der Programmiersprache Rust für Ubuntu verfügbar, und ab Ubuntu Version 25.10 wird die Implementierung in Rust als Standard bevorzugt.
Die Implementierung in Rust strebt Funktionsgleichheit mit der alten Implementierung an. Es können aber kleine Abweichungen auftreten. Dies bedeutet, dass das hier Beschriebene von der am eigenen Rechner vorgefundenen Situation abweichen kann.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Der Befehl tee (Englisch für den Buchstaben T in Anlehnung an ein T-Stück in Leitungen) liest von der Standardeingabe stdin, also z.B. der Tastatur oder der Ausgabe eines anderen Programms, die über eine Pipe umgeleitet wurde und gibt dann das Eingelesene sowohl auf die Standardausgabe stdout (also z.B. den Bildschirm) und parallel in ein oder mehrere Dateien aus.
Installation¶
Bis Ubuntu 25.04 ist das Programm im essentiellen Paket coreutils enthalten und deshalb auf jedem System installiert. Diese Variante beruht auf den altbekannten GNU Core Utilities.
Ab 25.10 ist das Paket coreutils 🇬🇧 jedoch ein Metapaket, welches alternativ durch gnu-coreutils 🇬🇧 oder rust-coreutils 🇬🇧 oder weitere befriedigt werden kann.
Bei 25.10 und 26.04 installiert das Paket coreutils-from-uutils 🇬🇧 beide vorstehend genannten Pakete und aktiviert die rust-coreutils als Vorgabe. Siehe Artikel rust-coreutils zur Umstellung auf die GNU-Utilities.
Ab 26.10 soll aber coreutils-from-uutils nur noch die rust-coreutils installieren. Wer dann die alten gnu-coreutils verwenden will, muss coreutils-from-gnu 🇬🇧 manuell installieren.
Benutzung¶
Die allgemeine Syntax von tee lautet[1]:
tee [OPTION] DATEI [DATEI2] [...]
Es muss mindestens eine Datei angegeben werden, in die geschrieben wird, es können aber auch mehrere Dateien übergeben werden.
Wie in der Einleitung beschrieben liest tee von stdin, d.h. das Kommando wird normalerweise in Kombination mit einem anderen benutzt.
Der Aufruf von
echo "Hallo Welt" | tee log.txt
würde "Hallo Welt" ausgeben und gleichzeitig in die Datei log.txt schreiben. Existiert die Datei nicht, wird diese angelegt. Existiert die Datei, wird der Inhalt gelöscht und neu geschrieben. Möchte man die Ausgabe anhängen, muss man tee mit der Option -a wie append, anhängen aufrufen:
echo "Hallo Welt" | tee -a log.txt
Sollten für das Schreiben der Ausgabedatei Root-Rechte benötigt werden, muss dem tee ein sudo vorangestellt werden - und nicht dem Befehl, von dessen Ausgabe tee liest.
Die Ausgabe nach stdout von tee kann umgelenkt und weiterverarbeitet werden.
Der Aufruf von
ping -c 2 ubuntuusers.de | tee log.txt | wc -w
würde das Ergebnis des Anpingens von ubuntuusers.de in die Datei log.txt schreiben, die Ausgabe nach stdout wird aber von wc weiterverarbeitet und die Worte der Ausgabe gezählt.
Links¶