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)