Umleitung in Dateien

LinuxBeginner
Jetzt üben

Einführung

Standardmäßig geben Linux-Befehle alles auf dem Bildschirm aus. Aber was ist, wenn Sie diese Daten speichern möchten?

Dieser Vorgang heißt Umleitung. Stellen Sie sich vor, Sie würden Ihrer Post eine „Weiterleitungsadresse“ geben.

So lässt sich die Shell-Syntax allgemein gut verstehen: Die Umleitung ändert nicht die grundlegende Funktion eines Befehls, sondern nur das Ziel, an das seine Eingabe oder Ausgabe gesendet wird.

In diesem Lab lernen Sie drei Möglichkeiten kennen, das Ziel von Daten zu steuern:

  1. Umleiten und überschreiben (>): Speichert die Ausgabe in einer Datei und ersetzt den bisherigen Inhalt.
  2. Umleiten und anhängen (>>): Fügt die Ausgabe am Ende einer Datei hinzu.
  3. Fehler umleiten (2>): Erfasst ausschließlich Fehlermeldungen.

Ausgabe umleiten und überschreiben

Das Größer-als-Zeichen > ist der Operator zum Überschreiben.

Viele Anfänger lernen > als „in einer Datei speichern“. Genauer ist jedoch: „Die Standardausgabe an diese Datei senden und den bisherigen Inhalt ersetzen.“ Diese Formulierung wird wichtig, sobald Sie mehrere Befehle gezielter miteinander kombinieren.

Linux erhält damit sinngemäß folgende Anweisung: „Nimm die Ausgabe dieses Befehls und schreibe sie in diese Datei. Wenn die Datei bereits existiert, lösche ihren bisherigen Inhalt zuerst.“

Wechseln Sie in Ihr Projektverzeichnis:

cd ~/project

Leiten Sie die Ausgabe in output.txt um:

echo "Hello, Linux." > output.txt

Auf dem Bildschirm erscheint nichts. Der Text wurde in die Datei geschrieben. Überprüfen Sie den Inhalt:

cat output.txt

Sehen Sie nun, warum wir von „Überschreiben“ sprechen. Führen Sie Folgendes aus:

echo "This is new content." > output.txt
cat output.txt

Der alte Text „Hello, Linux.“ ist verschwunden. Der Operator > hat die Datei vollständig geleert und mit dem neuen Inhalt beschrieben.

Behandeln Sie eine Umleitung deshalb genauso vorsichtig wie eine Änderung an einer Datei. Ein kurzer Befehl kann den Inhalt einer vorhandenen Datei sofort ersetzen.

Ausgabe anhängen (>>)

Oft möchten Sie Daten nicht löschen, sondern erweitern. Verwenden Sie dafür das doppelte Größer-als-Zeichen >>.

Dieser Operator dient zum Anhängen.

Fügen Sie eine neue Zeile an output.txt an:

echo "This line is appended." >> output.txt
cat output.txt

Sie sollten jetzt beide Zeilen sehen.

Der ursprüngliche Inhalt ist erhalten geblieben. Führen Sie den Vorgang erneut aus:

echo "Another line." >> output.txt
cat output.txt

Der Operator >> eignet sich besonders gut für Protokolldateien.

Das Anhängen ist wichtig, weil viele Dateien im laufenden Betrieb wachsen, anstatt jedes Mal vollständig neu erstellt zu werden. Protokolle, Berichte und Befehlsprotokolle verwenden häufig einen Arbeitsablauf, bei dem neue Daten am Ende hinzugefügt werden.

Fehler umleiten (2>)

Wie Sie gelernt haben, trennt Linux die „gute Ausgabe“ (stdout) von der „Fehlerausgabe“ (stderr).

Die Operatoren > und >> verarbeiten ausschließlich die „gute Ausgabe“. Fehlermeldungen ignorieren sie.

Hier wird das Stream-Modell aus dem vorherigen Lab praktisch. Wenn Ausgabe und Fehlermeldungen über getrennte Streams laufen, kann Linux sie an unterschiedliche Ziele weiterleiten.

Um Fehlermeldungen zu erfassen, verwenden wir 2>. Die Kennung für die Standardfehlerausgabe lautet 2.

Versuchen Sie, ein nicht vorhandenes Verzeichnis aufzulisten:

ls /missing_directory 2> error.log

Der Bildschirm bleibt leer. Die Fehlermeldung wurde abgefangen und in error.log geschrieben.

Sehen Sie sich die Datei an:

cat error.log

Die Fehlermeldung wird nun in der Datei angezeigt.

Die 2 in 2> stammt von der herkömmlichen Dateideskriptornummer für die Standardfehlerausgabe. Sie müssen sich noch nicht alle Dateideskriptoren merken. Es ist jedoch hilfreich zu wissen, dass diese Zahlen auf die Stream-Kanäle der Shell verweisen.

Zusammenfassung

Sie beherrschen nun die grundlegende Steuerung von Ausgabeströmen:

  • > (Überschreiben): Speichert die Ausgabe in einer Datei und löscht den bisherigen Inhalt.
  • >> (Anhängen): Fügt die Ausgabe am Ende einer Datei hinzu und bewahrt den bisherigen Inhalt.
  • 2> (Fehlerumleitung): Erfasst Fehlermeldungen.

Mit diesen Werkzeugen können Sie die Ergebnisse von Befehlen effizient speichern.