Erfahren Sie die Grundlagen der Umleitung von Linux -E/A (Eingabe/Ausgabe)

Erfahren Sie die Grundlagen der Umleitung von Linux -E/A (Eingabe/Ausgabe)

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:

  1. Das Befehlsergebnis - Daten Das Programm soll produziert werden und
  2. 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:

  1. stdin oder 0 - Es ist mit der Tastatur verbunden. Die meisten Programme lesen Eingaben aus dieser Datei.
  2. stdout oder 1 - Es ist an den Bildschirm angehängt und alle Programme senden ihre Ergebnisse an diese Datei und
  3. 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:

  1. -B - ermöglicht Spitze So laufen Sie im Stapelmodus, damit Sie ihre Ausgabe in eine Datei oder einen anderen Befehl umleiten können.
  2. -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.Protokoll 
Leiten 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:

$ cat   Leiten 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.Ausgang 

So 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 5 

Hier die Optionen:

  1. -l - Ermöglicht das Long Listing -Format
  2. -T - Sortieren nach Änderungszeit mit den neuesten Dateien werden zuerst angezeigt
  3. -N - Gibt die Anzahl der zu angezeigten Header -Linien an

Wichtige 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.Sch 
Kopieren Sie Dateien in mehrere Verzeichnisse

Und die Optionen:

  1. -n 1 - Weisen Sie Xargs an, höchstens ein Argument pro Befehlszeile zu verwenden und an den CP -Befehl zu senden
  2. CP - kopiert die Datei
  3. -v - Zeigt den Befehl des Copy -Fortschritts an.

Weitere Nutzungsoptionen und Informationen finden Sie durch die Xargs Mann Seite:

$ MAN XARGS 

A 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" | Teedatei1 
Beispiel für Tee -Befehl

Datei- 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.