Eingabe-Ausgabe-Umleitung in Linux/Unix-Beispielen
⚡ Intelligente Zusammenfassung
Die Umleitung in Linux und Unix ändert, wo ein Befehl Eingaben liest oder Ausgaben sendet (Swap).ping Tastatur und Bildschirm für Dateien oder Geräte, die Operatoren wie das Größer-als-Zeichen, das Kleiner-als-Zeichen und den Anfügeoperator verwenden.

Die Umleitung ist eine der nützlichsten Funktionen des Linux und der Unix-Shell, da sie es Ihnen ermöglicht, festzulegen, wohin ein Befehl seine Eingabe liest und seine Ausgabe sendet. Diese Seite erklärt Ausgabe-, Eingabe- und Fehlerumleitung anhand von Beispielen.
Was ist Umleitung?
Die Umleitung ist eine Funktion in Linux, mit der man beim Ausführen eines Befehls die Standard-Ein- und Ausgabegeräte ändern kann. Der grundlegende Arbeitsablauf eines jeden Linux-Befehl Es nimmt eine Eingabe entgegen und liefert eine Ausgabe.
- Das Standardeingabegerät (stdin) ist die Tastatur.
- Das Standardausgabegerät (stdout) ist der Bildschirm.
Durch Umleitung können die oben genannten Standardeingaben und -ausgaben geändert werden.
Ausgabeumleitung
Die folgende Grafik markiert den Beginn der Beispiele zur Ausgabeumleitung.
Das Symbol '>' wird zur Umleitung der Ausgabe (STDOUT) verwendet.
Ejemplo:
ls -al > listings
Hier wird die Ausgabe des Befehls `ls -al` in die Datei „listings“ umgeleitet, anstatt auf dem Bildschirm angezeigt zu werden. Der Screenshot unten zeigt das Ergebnis.
Hinweis: Verwenden Sie den korrekten Dateinamen, wenn Sie die Befehlsausgabe in eine Datei umleiten. Existiert bereits eine Datei mit demselben Namen, löscht der umgeleitete Befehl deren Inhalt und überschreibt ihn anschließend.
Wenn Sie eine Datei nicht überschreiben, sondern ihr zusätzlichen Inhalt hinzufügen möchten, verwenden Sie den Operator „>>“. Der folgende Screenshot zeigt mit „>>“ angehängten Inhalt.
Sie können die Standardausgabe nicht nur in Dateien, sondern auch auf Endgeräte umleiten.
$ cat music.mp3 > /dev/audio
Der Befehl cat liest die Datei music.mp3 und sendet die Ausgabe an /dev/audio, das Audiogerät. Wenn die Soundkonfiguration Ihres PCs korrekt ist, spielt dieser Befehl die Musikdatei ab.mp3.
Eingabeumleitung
Die folgende Grafik veranschaulicht die Eingabeumleitung.
Das Symbol '<' wird zur Eingabeumleitung (STDIN) verwendet.
Beispiel: Das Mailprogramm in Linux kann Ihnen dabei helfen, E-Mails vom Terminal aus zu versenden.
Sie können den Inhalt der E-Mail über die Tastatur, das Standardeingabegerät, eingeben. Wenn Sie jedoch eine Datei an die E-Mail anhängen möchten, können Sie den Eingabeumleitungsoperator im folgenden Format verwenden.
mail -s "Subject" to-address < Filename
Der folgende Screenshot zeigt, wie der Befehl mail eine Datei als Eingabe liest.
Dadurch wird die Datei an die E-Mail angehängt und an den Empfänger gesendet.
Die obigen Beispiele waren einfach. Betrachten wir nun einige fortgeschrittene Umleitungstechniken, die Dateideskriptoren verwenden.
Reichen Sie das Descriptoder (FD)
In Linux und Unix ist alles eine Datei. Normale Dateien, Verzeichnisse und sogar Geräte sind Dateien. Jeder Datei ist eine Nummer zugeordnet, der Dateideskriptor (FD) genannt wird.
Das folgende Diagramm zeigt die Standard-Streams und ihre Dateideskriptoren.
Ihr Bildschirm verfügt ebenfalls über einen Dateideskriptor. Wird ein Programm ausgeführt, wird die Ausgabe an den Dateideskriptor des Bildschirms gesendet und auf Ihrem Monitor angezeigt. Würde die Ausgabe an den Dateideskriptor des Druckers gesendet, würde sie ausgedruckt.
Fehlerumleitung
Wenn Sie ein Programm oder einen Befehl im Terminal ausführen, sind immer drei Dateien geöffnet: Standardeingabe, Standardausgabe und Standardfehlerausgabe.
Diese Dateien sind immer vorhanden, wenn ein Programm ausgeführt wird. Wie bereits erwähnt, ist jeder dieser Dateien ein Dateideskriptor zugeordnet.
| Reichen Sie das | Reichen Sie das Descriptor |
|---|---|
| Standardeingabe STDIN | 0 |
| Standardausgabe STDOUT | 1 |
| Standardfehler STDERR | 2 |
Standardmäßig wird der Fehlerstrom auf dem Bildschirm angezeigt. Die Fehlerumleitung leitet die Fehler in eine andere Datei um.
Warum Fehlerumleitung?
Fehlerumleitung ist eine der sehr beliebten Funktionen von Unix und Linux.
Erfahrene Unix-Nutzer wissen, dass viele Befehle eine Vielzahl von Fehlermeldungen ausgeben. Beispielsweise erhält man bei der Suche nach Dateien typischerweise die Fehlermeldung „…“. Erlaubnis Fehler werden oft als „verweigert“ angezeigt, was demjenigen, der nach einer bestimmten Datei sucht, in der Regel nicht weiterhilft. Beim Ausführen von Shell-Skripten möchte man häufig vermeiden, dass Fehlermeldungen die normale Programmausgabe verfälschen.
Die Lösung besteht darin, die Fehlermeldungen in eine Datei umzuleiten.
Beispiel 1
$ myprogram 2>errorsfile
Der folgende Screenshot zeigt diesen Befehl im Terminal.
Oben führen wir ein Programm namens „myprogram“ aus. Der Dateideskriptor für die Standardfehlerausgabe ist 2. Mit „2>“ leiten wir die Fehlerausgabe in eine Datei namens „errorsfile“ um. Dadurch wird die Programmausgabe nicht mit Fehlermeldungen überladen.
Beispiel 2
Hier ist ein weiteres Beispiel, das die find-Anweisung verwendet.
find . -name 'my*' 2>error.log
Mit dem Befehl find suchen wir im aktuellen Verzeichnis “.” nach einer Datei, deren Name mit “my” beginnt, und senden alle Fehler an error.log.
Beispiel 3: Betrachten wir ein komplexeres Beispiel.
Serveradministratoren listen häufig Verzeichnisse auf und speichern sowohl Fehler- als auch Standardausgabe in einer Datei, die später verarbeitet werden kann. Hier ist der Befehl.
ls Documents ABC> dirlist 2>&1
Das untenstehende Diagramm zeigt, wie beide Datenströme in einer Datei erfasst werden.
Hier:
- 2>&1 bedeutet, dass STDERR an dasselbe Ziel wie STDOUT (das Dateiverzeichnis) umgeleitet wird.
- Die Fehlerausgabe wird an die Standardausgabe umgeleitet, die wiederum in die Datei dirlist umgeleitet wird. Somit werden beide Ausgabeströme in die Datei dirlist geschrieben.
Das folgende Diagramm veranschaulicht, wie Eingabe, Ausgabe und Fehlerumleitung zusammenwirken.






.png)