tee-Befehl in Linux: So schreiben Sie Standardausgaben parallel in Dateien

Mit dem tee-Befehl bietet Linux die Möglichkeit, eine Standardeingabe nicht nur normal auszugeben, sondern diese zusätzlich in eine oder mehrere Dateien zu schreiben. Damit ist dieser Befehl eine nützliche Lösung, um Zwischenergebnisse zu speichern, zu archivieren oder auf Fehlerquellen zu untersuchen.

Was ist der Linux-tee-Befehl?

Um besser zu verstehen, was der Linux-tee-Befehl ist und was er bewirkt, bietet sich ein Blick auf seinen Namen an. Diesen hat er von dem T-Stück einer Leitung, das an eine Gabelung erinnert – und so funktioniert auch das praktische Kommando: Es liest einerseits von der Standardeingabe „stdin“, die zum Beispiel bei der Tastatur oder einem Programm zum Einsatz kommt, und gibt das Gelesene über die Standardausgabe „stdoutwieder aus. Zusätzlich zur Standardausgabe, also zum Beispiel dem Bildschirm, schreibt der tee-Befehl in Linux die Ausgabe dabei auch in eine oder mehrere Dateien. Aus der einen Eingabe entstehen also gleichzeitig zwei oder mehr Ausgaben.

Welche Funktion hat der tee-Befehl für Linux?

Die zusätzliche Datei, in die der Linux-Befehl tee die gelesenen Daten abspeichert, kann bei Bedarf neu erstellt werden. Alternativ nutzen Sie eine bestehende Datei, deren Inhalt dann gelöscht und neu geschrieben wird. Der wichtigste Grund für die Verwendung des tee-Befehls ist die Möglichkeit, Zwischenergebnisse innerhalb einer Linux-Pipe zu bewahren. So können Sie diese später bearbeiten oder auf mögliche Fehler hin untersuchen. Die Archivierung erfolgt dabei ohne technische Einschränkungen oder Behinderungen parallel zur eigentlichen Ausgabe.

Wie wird der Befehl verwendet?

Die grundsätzliche Syntax des Linux-tee-Befehls ist immer gleich und sieht wie folgt aus:

tee [OPTIONS] [FILE]
bash

Wichtig ist, dass immer mindestens eine Datei (FILE) angegeben wird, in die die Ausgabe geschrieben werden soll.

Ein einfaches Beispiel für die Anwendung des Linux-Kommandos ist die Kombination mit dem Befehl du (Disc Usage). Dieser zeigt an, welcher Teil einer Festplatte belegt ist. Der vollständige Befehl sieht dann folgendermaßen aus:

du -h | tee disk_usage.txt
bash

Sie erhalten die Information, wie viel Speicherplatz auf Ihrer Festplatte belegt ist. Durch die Option „-h“ (human readable) wird der belegte Platz in einem verständlichen Format angegeben. Gleichzeitig zur Standardausgabe wird die Information auch in der Textdatei disk_usage.txt hinterlegt und gespeichert. Wenn diese bisher nicht existiert, wird sie automatisch angelegt.

Wie verhindern Sie, dass der Inhalt einer Datei überschrieben wird?

Wenn Sie keine weiteren Vorkehrungen treffen, wird der Linux-tee-Befehl die Informationen in einer Datei überschreiben sobald er erneut eingesetzt und diese Datei angegeben wird. Möchten Sie dies ändern, nutzen Sie einfach die Befehlszeilenoption -a. Diese sorgt dafür, dass der neue Inhalt hinzugefügt wird. Beim oben genutzten Beispiel sähe das dann so aus:

du -h | tee -a disk_usage.txt
bash

Wie schreibt man mit dem tee-Befehl in mehrere Dateien gleichzeitig?

Es ist ohne große Umstände möglich, die Ausgabe in mehrere Dateien zu schreiben. Diese müssen Sie zu diesem Zweck lediglich einzeln angeben und durch Leerzeichen trennen, wie in folgendem Beispiel:

du -h | tee disk_usage1.txt disk_usage2.txt disk_usage3.txt
bash

Wie leitet man die Ausgabe als Eingabe weiter?

Mit dem Linux-tee-Befehl können Sie allerdings nicht nur die Ausgabe parallel in beliebig viele Dateien schreiben. Zusätzlich haben Sie auch die Möglichkeit, die Ausgabe als Eingabe an andere Befehle weiterzuleiten. Das funktioniert zum Beispiel so:

ls file* | tee dritte_datei.txt | wc -m
bash

In diesem Beispiel wird nicht nur die Ausgabe im Dokument dritte_datei.txt gespeichert, sondern Sie erhalten auch eine Information darüber, wie viele Zeichen sich in der Datei befinden.

Wie verwendet man den Linux-tee-Befehl mit sudo?

Auch in Verbindung mit sudo können Sie in Linux den tee-Befehl verwenden. Das ist dann von Vorteil oder sogar notwendig, wenn Sie in eine Datei geschrieben haben, für die Root-Rechte gelten. Verzichten Sie in einem solchen Fall auf sudo, wird Ihnen nur eine Fehlermeldung angezeigt. Hier ein Beispiel für den Aufbau dieses Befehls:

echo "Beispiel" | sudo tee -a root_dokument.txt
bash
Hinweis

sudo ist ein Befehl, der in unixartigen Betriebssystemen wie Linux oder macOS genutzt wird, um Programme mit erweiterten Rechten auszuführen. Dies ist vor allem dann hilfreich, wenn Aufgaben erledigt werden sollen, die normalerweise in den Aufgabenbereich der Administratorin oder des Administrators fallen.

Wie kann man einen Interrupt bei der Ausführung von tee ignorieren?

Mit der Befehlszeilenoption -i haben Sie die Möglichkeit, einen Interrupt (eine Unterbrechung) während der Ausführung des tee-Befehls in Linux zu ignorieren. Das Interruptsignal würde ansonsten angezeigt werden, wenn Sie die Tastenkombination [Strg] + [c] beziehungsweise [Ctrl] + [c] drücken. Die entsprechende Option setzen Sie direkt hinter dem Befehl tee ein:

command | tee -i file.out
bash