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 Hier wenn das Video nicht zugänglich ist
Ausgabeumleitung
Die '>' Symbol wird für die Umleitung der Ausgabe (STDOUT) verwendet.
Beispiel:
ls -al > listings
Hier wird die Ausgabe des Befehls ls -al in die Datei „listings“ anstatt auf Ihren Bildschirm umgeleitet.
NoteFehlerbeseitigung: 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
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 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
Hier
- 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.