Linux / Befehl tee: Pipeline-Ausgabe anzeigen und speichern

tee sendet die Standardeingabe an die Standardausgabe, während derselbe Inhalt gleichzeitig in einer oder mehreren Dateien aufgezeichnet wird. Es ist nützlich, wenn Sie Zwischenergebnisse in einer Pipeline anzeigen möchten, während Sie sie speichern.

Standardmäßig wird die angegebene Datei überschrieben. Um vorhandene Aufzeichnungen anzuhängen, verwenden Sie -a. Im Gegensatz zu regulärer >-Umleitung kann es die Eingabe weiterhin an die nachfolgenden Befehle in der Pipeline weiterleiten.

Grundlegende Syntax

Command | tee [options] file [file...]

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung für Ihr aktuelles System mit man tee.

Beispiele

Gleichzeitig auf Bildschirm und Datei

In die Datei speichern, während die Ausgabe angezeigt wird.

date | tee run-time.txt

An bestehende Protokolle anhängen

-a hängt ans Ende der Datei an.

date | tee -a run-time.txt

Zwischenergebnisse speichern und Verarbeitung fortsetzen

Nach dem Speichern der Sortierergebnisse fahren Sie fort, nur den Anfangsteil zu überprüfen.

sort names.txt | tee names.sorted | head

Ergebnisse, die sowohl auf dem Bildschirm als auch in einer Datei erscheinen

Um Zwischenergebnisse einer Pipeline auf dem Bildschirm anzuzeigen und sie gleichzeitig in einer Datei zu speichern, verwenden Sie tee.

printf 'status=ok\n' | tee result.txt

Folgendes wird auf dem Bildschirm angezeigt, und dieselbe Zeile wird in result.txt aufgezeichnet.

status=ok

Das Standardverhalten besteht darin, die Zieldatei zu überschreiben. Um den vorhandenen Inhalt beizubehalten und anzuhängen, verwenden Sie tee -a result.txt. Wenn Sie in eine Datei schreiben, die dem Administrator gehört, benötigen Sie möglicherweise command | sudo tee file anstelle von sudo command > file, da die Umleitung mit den Berechtigungen der aktuellen Shell ausgeführt wird.

Hauptoptionen und Format

Optionen/Format Beschreibung
-a Hinzufügen, ohne die vorhandene Datei zu überschreiben.
-i Interrupt-Signale ignorieren.
-p Anpassen, wie die GNU-Implementierung mit Fehlern beim Schreiben in Pipes umgeht.

Vorsichtsmaßnahmen bei der Verwendung

sudo command > /protected/file kann fehlschlagen, weil die aktuelle Shell, die die Umleitung durchführt, keine Berechtigung hat. In diesem Fall verwenden Sie command | sudo tee file, aber die Eingabe wird auch auf dem Bildschirm angezeigt, daher Vorsicht bei Geheimnissen. Fehlerausgaben werden standardmäßig nicht an tee gesendet.

Häufig gestellte Fragen

Speichert tee auch Standardfehler?

Standardmäßig speichert es nur das, was über die Standardeingabe eingeht. Um Fehler einzuschließen, geben Sie explizit die entsprechende Shell-Umleitung an.

Offizielle Dokumentation

Das genaue Verhalten der Option und die Unterschiede zwischen den Implementierungen finden Sie in der offiziellen Dokumentation für tee.