Ausgabe mit tee
aufteilen und Standardeingabe mit <
umleiten
In diesem letzten Schritt werden Sie zwei ergänzende Umleitungskonzepte untersuchen: das Aufteilen der Ausgabe mit dem Befehl tee
und die Bereitstellung von Eingaben für einen Befehl aus einer Datei mithilfe des Operators <
.
Ausgabe mit tee
aufteilen
Manchmal möchten Sie die Ausgabe eines Befehls in einer Datei speichern und sie gleichzeitig auf dem Terminal anzeigen. Die Operatoren >
und >>
leiten die Ausgabe ausschließlich in eine Datei um und verbergen sie vor dem Bildschirm. Der Befehl tee
löst dieses Problem, indem er die Ausgabe aufteilt und sowohl an eine Datei als auch an die Standardausgabe (Ihren Bildschirm) sendet. Er ist nach einem T-Stück in der Sanitärtechnik benannt, das einen Fluss in zwei Wege aufteilt.
Sehen wir uns das in Aktion an. Wir listen den Inhalt des Verzeichnisses /etc/
auf und verwenden tee
, um die Liste sowohl auf dem Bildschirm anzuzeigen als auch in einer Datei namens etc_listing.txt
zu speichern.
ls /etc/ | tee etc_listing.txt
Sie sehen die vollständige Verzeichnisliste, die auf Ihrem Terminal ausgegeben wird. Gleichzeitig hat der Befehl tee
die exakt gleiche Ausgabe in etc_listing.txt
geschrieben. Sie können dies überprüfen:
cat etc_listing.txt
Der Inhalt der Datei entspricht dem, was Sie auf dem Bildschirm gesehen haben.
Standardmäßig überschreibt tee
die Zieldatei. Um stattdessen an eine Datei anzuhängen, verwenden Sie die Option -a
. Dies ist sehr nützlich für die Protokollierung. Erstellen wir eine Protokolldatei und hängen zwei Einträge an.
date | tee system_log.txt
echo "User labex performed a system check." | tee -a system_log.txt
Der erste Befehl erstellt system_log.txt
mit dem aktuellen Datum. Der zweite Befehl verwendet tee -a
, um eine neue Zeile anzuhängen, ohne das Datum zu löschen. Sehen wir uns die endgültige Datei an:
cat system_log.txt
Die Ausgabe zeigt beide Zeilen:
Wed Jun 25 14:56:53 CST 2025
User labex performed a system check.
Standardeingabe mit <
umleiten
Nun betrachten wir das Gegenteil der Ausgabeumleitung: die Umleitung der Standardeingabe (stdin
). Viele Befehle wie sort
, wc
oder cat
können Daten von stdin
(normalerweise Ihrer Tastatur) lesen. Der Operator <
ermöglicht es Ihnen, einem Befehl mitzuteilen, dass er seine Eingaben stattdessen aus einer Datei beziehen soll.
Erstellen wir zunächst eine einfache Datei mit einer Liste von Elementen. Wir nennen sie items.txt
.
echo "banana" > items.txt
echo "apple" >> items.txt
echo "cherry" >> items.txt
Nun haben wir eine Datei items.txt
mit drei unsortierten Elementen. Der Befehl sort
kann Textzeilen sortieren. Verwenden wir <
, um items.txt
in den Befehl sort
einzuspeisen.
sort < items.txt
Der Befehl liest den Inhalt von items.txt
als seine Eingabe, sortiert ihn und gibt das Ergebnis an seine Standardausgabe (das Terminal) aus:
apple
banana
cherry
Dies ist funktional ähnlich wie die Ausführung von sort items.txt
, demonstriert aber das mächtige Konzept der Umleitung einer Datei in die Standardeingabe eines Befehls. Dies wird unerlässlich, wenn Sie mit Befehlen arbeiten, die nur von stdin
lesen können und keinen Dateinamen als Argument akzeptieren.
Als letztes Beispiel betrachten wir cat < items.txt
. Dies weist cat
an, seine Eingabe aus items.txt
zu lesen, und da die Aufgabe von cat
darin besteht, seine Eingabe an seine Ausgabe zu senden, zeigt es den Inhalt der Datei auf dem Bildschirm an.
cat < items.txt
Damit ist unsere Tour durch die grundlegende I/O-Umleitung in Linux abgeschlossen. Sie verfügen nun über die Werkzeuge, um zu steuern, woher Ihre Befehle ihre Eingaben erhalten und wohin ihre Ausgaben gehen.