Erfahren Sie die Grundlagen der Umleitung von Linux -E/A (Eingabe/Ausgabe)
- 3797
- 826
- Tom Jakobs
Eines der wichtigsten und interessantesten Themen unter Linux -Administration ist die E/A -Umleitung. Diese Funktion der Befehlszeile ermöglicht es Ihnen, die Eingabe und/oder Ausgabe von Befehlen aus und/oder an Dateien umzuleiten oder mehrere Befehle mithilfe von Pipes zusammenzuführen, um das zu bilden, was als "bekannt ist"Kommandopipeline”.
Alle Befehle, die wir ausführen, produzieren wir grundlegend zwei Arten von Ausgabe:
- Das Befehlsergebnis - Daten Das Programm soll produziert werden und
- Die Programmstatus- und Fehlermeldungen, die einen Benutzer über die Programmausführungsdetails informieren.
In Linux und anderen UNIX-ähnlichen Systemen befinden sich drei Standarddateien, die auch von der Shell unter Verwendung von Dateideskriptornummern identifiziert werden:
- stdin oder 0 - Es ist mit der Tastatur verbunden. Die meisten Programme lesen Eingaben aus dieser Datei.
- stdout oder 1 - Es ist an den Bildschirm angehängt und alle Programme senden ihre Ergebnisse an diese Datei und
- Stderr oder 2 - Programme senden Status/Fehlermeldungen an diese Datei, die ebenfalls an den Bildschirm angehängt ist.
Mit der I/A -Umleitung können Sie daher die Eingangsquelle eines Befehls sowie an die Ausgabe- und Fehlermeldungen verändern, an die Sie gesendet werden. Und dies wird durch die ermöglicht “<”
Und ">"
Umleitungsoperatoren.
So leiten Sie die Standardausgabe in die Datei unter Linux um
Sie können die Standardausgabe wie im folgenden Beispiel umleiten. Hier möchten wir die Ausgabe des oberen Befehls zur späteren Inspektion speichern:
$ top -bn 5> Top.Protokoll
Wo die Flaggen:
-B
- ermöglicht Spitze So laufen Sie im Stapelmodus, damit Sie ihre Ausgabe in eine Datei oder einen anderen Befehl umleiten können.-N
- Gibt die Anzahl der Iterationen an, bevor der Befehl endet.
Sie können den Inhalt von anzeigen Spitze.Protokoll
Datei mit CAT -Befehl wie folgt wie folgt:
$ cat top.Protokoll
Verwenden Sie die Ausgabe eines Befehls, um die Ausgabe eines Befehls anzuhängen, die ">>"
Operator.
Zum Beispiel, um die Output of Top -Befehl oben in der anzugreifen Spitze.Protokoll Datei insbesondere innerhalb eines Skripts (oder in der Befehlszeile) geben Sie die folgende Zeile ein:
$ top -bn 5 >> Top.Protokoll
Notiz: Verwenden der Dateideskriptorennummer ist der obige Ausgangsumleitungsbefehl übereinstimmt:
$ top -bn 5 1> Top.Protokoll
So leiten Sie Standardfehler zur Datei in Linux um
Um den Standardfehler eines Befehls umzuleiten, müssen Sie die Dateideskriptorennummer explizit angeben, 2
damit die Schale versteht, was Sie versuchen zu tun.
Beispielsweise erzeugt der folgende LS -Befehl einen Fehler, wenn er von einem normalen Systembenutzer ohne Root -Berechtigungen ausgeführt wird:
$ ls -l /root /
Sie können den Standardfehler wie unten in eine Datei umleiten:
$ ls -l / root / 2> ls -remor.log $ cat ls-remor.ProtokollLeiten Sie den Standardfehler zur Datei um
Um den Standardfehler anzuhängen, verwenden Sie den folgenden Befehl:
$ ls -l / root / 2 >> ls -remor.Protokoll
So umleiten Sie die Standardausgabe/ einen Fehler in eine Datei um
Es ist auch möglich, die gesamte Ausgabe eines Befehls (sowohl Standardausgabe als auch Standardfehler) in eine einzelne Datei zu erfassen. Dies kann auf zwei mögliche Arten erfolgen, indem die Dateideskriptornummern angegeben werden:
1. Das erste ist eine relativ alte Methode, die wie folgt funktioniert:
$ ls -l / root /> ls -fehler.Protokoll 2> & 1
Der obige Befehl bedeutet, dass die Shell zuerst die Ausgabe des Befehls LS an die Datei sendet LS-Error.Protokoll (Verwendung > ls-remor.Protokoll
) und schreibt dann alle Fehlermeldungen an den Dateideskriptor 2 (Standardausgabe), die in die Datei umgeleitet wurde LS-Error.Protokoll (Verwendung 2> & 1
). Dies impliziert, dass der Standardfehler auch an dieselbe Datei wie Standardausgabe gesendet wird.
2. Die zweite und direkte Methode ist:
$ ls -l / root / &> ls -remor.Protokoll
Sie können auch die Standardausgabe und den Standardfehler an eine einzelne Datei wie SO anhängen:
$ ls -l / root / & >> ls -fehler.Protokoll
So leiten Sie die Standardeingabe in die Datei um
Die meisten wenn nicht alle Befehle erhalten ihre Eingabe von der Standardeingabe, und standardmäßig wird die Standardeingabe an die Tastatur befestigt.
Verwenden Sie die Standardeingabe aus einer anderen Datei als der Tastatur, um die Standardeingabe aus einer anderen Datei als Tastatur umzuleiten, die “<”
Bediener wie unten:
$ catLeiten Sie die Standardeingabe in die Datei um So leiten Sie die Standardeingabe/Ausgabe in Datei um
Sie können die Standardeingabe und die Standardausgabe gleichzeitig mit dem Befehl sortieren wie unten ausführen:
$ sortieren.AusgangSo verwenden Sie die E/A -Umleitung mit Rohren
Um die Ausgabe eines Befehls als Eingabe eines anderen umzuleiten, können Sie Rohre verwenden. Dies ist ein leistungsstarkes Mittel, um nützliche Befehlszeilen für komplexe Operationen zu erstellen.
Im folgenden Befehl werden beispielsweise die fünf wichtigsten kürzlich geänderten Dateien aufgelistet.
$ ls -lt | Kopf -n 5Hier die Optionen:
-l
- Ermöglicht das Long Listing -Format-T
- Sortieren nach Änderungszeit mit den neuesten Dateien werden zuerst angezeigt-N
- Gibt die Anzahl der zu angezeigten Header -Linien anWichtige Befehle zum Bau von Pipelines
Hier werden wir kurz zwei wichtige Befehle für das Aufbau von Kommandopipelines überprüfen und sie sind:
Xargs mit deren Erstellung und Ausführung von Befehlszeilen von Standardeingaben verwendet werden. Unten finden Sie ein Beispiel für eine Pipeline, die verwendet Xargs, Dieser Befehl wird verwendet, um eine Datei in mehrere Verzeichnisse unter Linux zu kopieren:
$ echo/home/aaronkilik/test//home/aaronkilik/tmp | xargs -n 1 cp -v/home/aaronkilik/bin/sys_info.SchKopieren Sie Dateien in mehrere VerzeichnisseUnd die Optionen:
-n 1
- Weisen Sie Xargs an, höchstens ein Argument pro Befehlszeile zu verwenden und an den CP -Befehl zu sendenCP
- kopiert die Datei-v
- Zeigt den Befehl des Copy -Fortschritts an.Weitere Nutzungsoptionen und Informationen finden Sie durch die Xargs Mann Seite:
$ MAN XARGSA Tee Der Befehl liest aus Standardeingaben und schriftlich in Standardausgaben und Dateien schreibt. Wir können zeigen, wie Tee funktioniert wie folgt:
$ echo "Testen, wie Tee -Befehl funktioniert" | Teedatei1Beispiel für Tee -BefehlDatei- oder Textfilter werden üblicherweise mit Rohren für effektive Linux -Dateioperationen verwendet, um Informationen auf leistungsstarke Weise zu verarbeiten, z. Aufgaben.
Um mehr über Linux -Filter und -Pipes zu erfahren, lesen Sie diesen Artikel. Suchen Sie die Top 10 IP -Adressen zum Zugriff auf Apache Server. Zeigt ein nützliches Beispiel für die Verwendung von Filtern und Rohren an.
In diesem Artikel haben wir die Grundlagen der I/A -Umleitung in Linux erläutert. Denken Sie daran, Ihre Gedanken über den Feedback -Abschnitt unten zu teilen.
- « Setup SYSVOL -Replikation über zwei SAMBA4 -Anzeigen -DC mit RSYNC - Teil 6
- Unterschied zwischen SU und Sudo und wie man sudo unter Linux konfiguriert »