Verwendung des Tee-Befehls unter Linux

Verwendung des Tee-Befehls unter Linux

Wenn Sie jemals Pipes und Umleitungen unter Ihrer Linux-Shell verwenden, müssen Sie wahrscheinlich auch die verwenden tee Nützlichkeit.

Was macht Tee?

Ein Befehl wie

zeigt den Inhalt Ihres aktuellen Verzeichnisses an. Mit anderen Worten, diese Inhalte werden in Standardausgabe (Standardausgabe) angezeigt, die normalerweise Ihr Bildschirm oder genauer gesagt in Ihrem virtuellen Terminal ist.

Ein Befehl wie

zeigt nichts auf Ihrem Bildschirm an. Das liegt daran, dass die > sign leitet alle Ausgaben in eine Datei um, anstatt sie auf stdout anzuzeigen. Die Datei 123 wird nun mit den Inhalten gefüllt, die zuvor auf Ihrem Bildschirm angezeigt wurden.

Um den Inhalt Ihres Verzeichnisses auf dem Bildschirm anzuzeigen und in eine Datei zu schreiben, verwenden Sie zwei Befehle. Mit tee Sie können beide Dinge gleichzeitig tun.

Warum Tee verwenden, wenn Sie einen ähnlichen Befehl zweimal ausführen können?

Im obigen Beispiel benötigen Sie offensichtlich kein Tee, wenn Sie ausführen können ls normal und dann erneut ausführen und die Ausgabe in eine Datei umleiten. Es treten jedoch Situationen auf, in denen die Ausgabe eindeutig ist. Stellen Sie sich ein Szenario vor, in dem Sie versuchen, ein Problem zu diagnostizieren. Sie laufen diagnose | tee error.log. Die Fehler, die Sie erhalten, sind möglicherweise eindeutig. Sie möchten, dass sie auf dem Bildschirm angezeigt werden, damit Sie sehen können, was beim Testen passiert. Sie möchten diese Fehler aber auch in einer Datei speichern, damit Sie sie später überprüfen oder die Ausgabe in ein Diskussionsforum einfügen und andere Personen danach fragen können.

Eine andere Situation, die häufig auftritt, wenn Sie möglicherweise ein Tee benötigen, ist folgende: Sie möchten die Ausgabe eines Befehls an einen Ort schreiben, an dem nur der Root-Benutzer lesen oder schreiben kann. Das wird nicht funktionieren.

Dann könnten Sie denken: “Nun, natürlich, verwenden Sie einfach Sudo!” Und Sie werden überrascht sein, dass dies auch nicht funktioniert:

Das liegt daran, dass nach sudo blkid Wenn Sie ausgeführt werden, sind Sie weiterhin als Ihr regulärer Benutzer ohne Rootberechtigung angemeldet. Und Ihre Shell (normalerweise Bash) versucht zu schreiben /root/somefile mit Ihren regulären Benutzeranmeldeinformationen. Um dies zu lösen, können Sie Tee verwenden:

Text anhängen und Fehler umleiten

Tee ist ein nützlicher, aber einfacher Befehl. eine grundlegende command | tee somefile wird die meiste Zeit ausreichen. Es gibt jedoch zwei Szenarien, für die diese Tipps erforderlich sein können.

Das erste, was Sie wissen müssen, ist, dass Tee standardmäßig immer eine Datei überschreibt. Wenn du läufst

und dann

Der zweite Befehl überschreibt den Inhalt einer Datei, und Sie sehen nur den Inhalt des zuletzt ausgeführten Befehls. Um dieses Verhalten zu ändern, können Sie festlegen, dass der Text angehängt wird, anstatt ihn zu überschreiben. Verwenden Sie dazu einfach die -a Befehlsschalter.

Das zweite, was Sie wissen müssen, ist, dass nicht alle Ausgaben gleich sind. Fehlermeldungen werden unterschiedlich behandelt, und obwohl sie auf dem Bildschirm angezeigt werden, gelten sie nicht als Standard, sodass sie nicht vom Abschlag erfasst werden. (Sie gelten als stderr.) Hier ist ein Beispiel auf grep.

Es wird ungefähr das folgende Bild angezeigt.

Nachrichten mit verweigerter Berechtigung werden in stderr geschrieben. Das einzige, was in stdout geschrieben wird, ist der hervorgehobene Text. Aus diesem Grund werden Sie feststellen, dass der Inhalt von “somefile” dem im folgenden Bild gezeigten entspricht.

Tee Grep Dateiinhalt

In diesem Fall, in dem grep zum Suchen nach Text verwendet wird, ist es hilfreich, dass Fehlermeldungen nicht in die Datei umgeleitet werden. Sie würden die Datei nur mit unnötigem Müll füllen. Sie möchten nur die gefundenen Ergebnisse sehen. Wenn Sie jedoch die Fehlermeldungen benötigen, verwenden Sie 2>&1, der stderr nach stdout umleitet.

Mit diesem Befehl werden Sie feststellen, dass somefile jetzt auch die Fehlermeldungen enthält.

Fazit

Hoffentlich behandelt dieses Tutorial alles, was Sie brauchen, um den Tee-Befehl optimal zu nutzen. Wenn Sie jedoch auf eine Situation stoßen, in der Sie mit dem Abschlag stecken bleiben, hinterlassen Sie unten einen Kommentar, und wir können Ihnen möglicherweise helfen.