Eingabe-Ausgabe-Umleitung in Linux/Unix-Beispielen
Was ist Umleitung?
Die Umleitung ist eine Funktion in Linux, mit der Sie beim Ausfรผhren eines Befehls die Standard-Eingabe-/Ausgabegerรคte รคndern kรถnnen. Der grundlegende Arbeitsablauf von jedem Linux-Befehl ist, dass es eine Eingabe entgegennimmt und eine Ausgabe liefert.
- Das Standardeingabegerรคt (stdin) ist die Tastatur.
- Das Standardausgabegerรคt (stdout) ist der Bildschirm.
Mit der Umleitung kann die obige Standard-Ein-/Ausgabe geรคndert werden.
Klicken Sie auf werden auf dieser Seite erlรคutert wenn das Video nicht zugรคnglich ist
Ausgabeumleitung
Die '>' Symbol wird fรผr die Umleitung der Ausgabe (STDOUT) verwendet.
Ejemplo:
ls -al > listings
Hier wird die Ausgabe des Befehls ls -al in die Datei โlistingsโ anstatt auf Ihren Bildschirm umgeleitet.
HinweisFehlerbeseitigung: Verwenden Sie den korrekten Dateinamen, wรคhrend Sie die Befehlsausgabe in eine Datei umleiten. Wenn es eine vorhandene Datei mit demselben Namen gibt, lรถscht der umgeleitete Befehl den Inhalt dieser Datei und kann dann รผberschrieben werden.โ
Wenn Sie nicht mรถchten, dass eine Datei รผberschrieben wird, sondern einer bestehenden Datei mehr Inhalt hinzufรผgen mรถchten, sollten Sie verwenden '>>'-Operator.
Sie kรถnnen die Standardausgabe nicht nur auf Dateien, sondern auch auf Gerรคte umleiten!
$ cat music.mp3 > /dev/audio
Der cat-Befehl liest die Datei music.mp3 und sendet die Ausgabe an /dev/audio, das das Audiogerรคt ist. Wenn die Soundkonfigurationen in Ihrem PC korrekt sind, spielt dieser Befehl die Datei music.mp3 ab
Eingabeumleitung
Die 'Das Symbol โwird fรผr die Eingabeumleitung (STDIN) verwendet
Ejemplo: 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 Standardtastatur des Gerรคts 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
Dadurch wird die Datei an die E-Mail angehรคngt und an den Empfรคnger gesendet.
Die obigen Beispiele waren einfach. Schauen wir uns einige fortgeschrittene Umleitungstechniken an, die File Descriptoders.
Reichen Sie das Descriptoder (FD)
Unter Linux/Unix ist alles eine Datei. Normale Dateien, Verzeichnisse und sogar Gerรคte sind Dateien. Jede Datei hat eine zugehรถrige Nummer namens Datei Descriptoder (FD).
Auf Ihrem Bildschirm befindet sich auรerdem eine Datei Descriptoder. Wenn ein Programm ausgefรผhrt wird, wird die Ausgabe an Datei gesendet Descriptoder des Bildschirms, und Sie sehen die Programmausgabe auf Ihrem Monitor. Wenn die Ausgabe an Datei gesendet wird Descriptoder des Druckers wรคre die Programmausgabe ausgedruckt worden.
Fehlerumleitung
Wenn Sie ein Programm/einen Befehl am Terminal ausfรผhren, sind immer 3 Dateien geรถffnet, nรคmlich Standardeingabe, Standardausgabe, Standardfehler.
Diese Dateien sind immer vorhanden, wenn ein Programm ausgefรผhrt wird. Wie bereits erlรคutert, 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. Bei der Fehlerumleitung werden die Fehler in eine andere Datei als auf den Bildschirm umgeleitet.
Warum Fehlerumleitung?
Die Fehlerumleitung ist eine der sehr beliebten Funktionen von Unix / Linux.
Hรคufige UNIX-Benutzer werden damit rechnen, dass viele Befehle eine Menge Fehler verursachen.
- Wenn man beispielsweise nach Dateien sucht, erhรคlt man normalerweise die Fehlermeldung โBerechtigung verweigertโ. Diese Fehlermeldungen helfen der Person, die nach einer bestimmten Datei sucht, normalerweise nicht weiter.
- Beim Ausfรผhren von Shell-Skripten mรถchten Sie hรคufig NICHT, dass Fehlermeldungen die normale Programmausgabe รผberladen.
Die Lรถsung besteht darin, die Fehlermeldungen in eine Datei umzuleiten.
Beispiel 1
$ myprogram 2>errorsfile
Oben fรผhren wir ein Programm namens myprogram aus.
Der Dateideskriptor fรผr Standardfehler ist 2.
Mit โ2>โ leiten wir die Fehlerausgabe in eine Datei namens โerrorfileโ um
Somit ist die Programmausgabe nicht mit Fehlern รผberladen.
Beispiel 2
Hier ist ein weiteres Beispiel, das die find-Anweisung verwendet โ
find . -name 'my*' 2>error.log
Mit dem Befehl โfindโ durchsuchen wir das aktuelle Verzeichnis โ.โ nach einer Datei, deren Name mit โmyโ beginnt.
Beispiel 3: Schauen wir uns ein komplexeres Beispiel an,
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
Dabei steht:
- die die Ausgabe einer Datei in die Eingabe einer anderen Datei schreibt. 2>&1 bedeutet, dass STDERR zum Ziel von STDOUT umleitet (das ist die Datei dirlist)
- Wir leiten die Fehlerausgabe an die Standardausgabe um, die wiederum an die Datei dirlist umgeleitet wird. Daher wird sowohl die Ausgabe in die Datei dirlist geschrieben
Zusammenfassung
- Jede Datei in Linux hat eine entsprechende Datei Descriptoder damit verbunden
- Die Tastatur ist das Standardeingabegerรคt, wรคhrend Ihr Bildschirm das Standardausgabegerรคt ist
- โ>โ ist der Ausgabeumleitungsoperator. โ>>โ hรคngt die Ausgabe an eine vorhandene Datei an.
- โ<โ ist der Eingabeumleitungsoperator
- โ>&โ leitet die Ausgabe einer Datei in eine andere um.
- Sie kรถnnen den Fehler mit der entsprechenden Datei umleiten Descriptoder 2.






.png)