GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Lernen Sie die Grundlagen der Funktionsweise der E/A-Umleitung (Eingabe/Ausgabe) unter Linux kennen

Eines der wichtigsten und interessantesten Themen in der Linux-Administration ist die I/O-Umleitung. Mit dieser Funktion der Kommandozeile können Sie die Ein- und/oder Ausgabe von Kommandos von und/oder zu Dateien umleiten oder mehrere Kommandos über Pipes zu einer sogenannten „Command Pipeline“ zusammenfügen “.

Alle Befehle, die wir ausführen, erzeugen grundsätzlich zwei Arten von Ausgaben:

  1. das Befehlsergebnis – Daten, die das Programm erzeugen soll, und
  2. der Programmstatus und Fehlermeldungen, die einen Benutzer über die Details der Programmausführung informieren.

In Linux und anderen Unix-ähnlichen Systemen gibt es drei unten genannte Standarddateien, die auch von der Shell anhand 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 wird 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 am Bildschirm angehängt ist.

Daher können Sie mit der E/A-Umleitung die Eingabequelle eines Befehls sowie den Ort ändern, an den seine Ausgabe und Fehlermeldungen gesendet werden. Und das wird durch den “<” ermöglicht und “>” Umleitungsoperatoren.

So leiten Sie die Standardausgabe unter Linux in eine Datei um

Sie können die Standardausgabe wie im folgenden Beispiel umleiten, hier wollen wir die Ausgabe des obersten Befehls zur späteren Überprüfung speichern:

$ top -bn 5 >top.log

Wo die Flaggen:

  1. -b – aktiviert oben im Stapelmodus auszuführen, sodass Sie die Ausgabe in eine Datei oder einen anderen Befehl umleiten können.
  2. -n – gibt die Anzahl der Iterationen an, bevor der Befehl beendet wird.

Sie können den Inhalt von top.log anzeigen Datei mit dem cat-Befehl wie folgt:

$ cat top.log

Um die Ausgabe eines Befehls anzuhängen, verwenden Sie den “>>” Betreiber.

Zum Beispiel, um die Ausgabe des oberen Befehls oben in der top.log anzuhängen Datei, insbesondere innerhalb eines Skripts (oder auf der Befehlszeile), geben Sie die folgende Zeile ein:

$ top -bn 5 >>top.log

Hinweis :Unter Verwendung der Dateideskriptornummer ist der obige Ausgabeumleitungsbefehl derselbe wie:

$ top -bn 5 1>top.log

So leiten Sie Standardfehler unter Linux in eine Datei um

Um den Standardfehler eines Befehls umzuleiten, müssen Sie explizit die Dateideskriptornummer 2 angeben damit die Shell versteht, was Sie zu tun versuchen.

Zum Beispiel erzeugt der folgende ls-Befehl einen Fehler, wenn er von einem normalen Systembenutzer ohne Root-Rechte ausgeführt wird:

$ ls -l /root/

Sie können den Standardfehler wie folgt in eine Datei umleiten:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 

Um den Standardfehler anzuhängen, verwenden Sie den folgenden Befehl:

$ ls -l /root/ 2>>ls-error.log

So leiten Sie die Standardausgabe/Fehler in eine Datei um

Es ist auch möglich, die gesamte Ausgabe eines Befehls (sowohl Standardausgabe als auch Standardfehler) in einer einzigen Datei zu erfassen. Dies kann auf zwei Arten erfolgen, indem die Dateideskriptornummern angegeben werden:

1. Die erste ist eine relativ alte Methode, die wie folgt funktioniert:

$ ls -l /root/ >ls-error.log 2>&1

Der obige Befehl bedeutet, dass die Shell zuerst die Ausgabe des ls-Befehls an die Datei ls-error.log sendet (unter Verwendung von >ls-error.log ) und schreibt dann alle Fehlermeldungen in den Dateideskriptor 2 (Standardausgabe), die in die Datei ls-error.log umgeleitet wurde (mit 2>&1 ). Dies impliziert, dass der Standardfehler auch an dieselbe Datei wie die Standardausgabe gesendet wird.

2. Die zweite und direkte Methode ist:

$ ls -l /root/ &>ls-error.log

Sie können auch Standardausgabe und Standardfehler wie folgt an eine einzelne Datei anhängen:

$ ls -l /root/ &>>ls-error.log

So leiten Sie die Standardeingabe in eine Datei um

Die meisten, wenn nicht alle Befehle erhalten ihre Eingabe von der Standardeingabe, und standardmäßig ist die Standardeingabe mit der Tastatur verbunden.

Um die Standardeingabe von einer anderen Datei als der Tastatur umzuleiten, verwenden Sie den “<” Operator wie folgt:

$ cat <domains.list 

So leiten Sie die Standardeingabe/-ausgabe in eine Datei um

Sie können die Standardeingabe- und Standardausgabeumleitung gleichzeitig mit dem Sortierbefehl wie folgt durchführen:

$ sort <domains.list >sort.output

So verwenden Sie die E/A-Umleitung mithilfe von Pipes

Um die Ausgabe eines Befehls als Eingabe eines anderen umzuleiten, können Sie Pipes verwenden, dies ist ein leistungsfähiges Mittel, um nützliche Befehlszeilen für komplexe Operationen zu erstellen.

Der folgende Befehl listet beispielsweise die fünf am häufigsten geänderten Dateien auf.

$ ls -lt | head -n 5 

Hier die Optionen:

  1. -l – aktiviert das lange Auflistungsformat
  2. -t – nach Änderungszeit sortieren, wobei die neusten Dateien zuerst angezeigt werden
  3. -n – gibt die Anzahl der anzuzeigenden Kopfzeilen an

Wichtige Befehle zum Erstellen von Pipelines

Hier werden wir kurz auf zwei wichtige Befehle zum Erstellen von Befehlspipelines eingehen, und zwar:

xargs die zum Erstellen und Ausführen von Befehlszeilen aus der Standardeingabe verwendet wird. Unten sehen Sie ein Beispiel einer Pipeline, die xargs verwendet , 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.sh

Und die Optionen:

  1. -n 1 – weist 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 Fortschritt des Kopierbefehls an.

Weitere Verwendungsoptionen und Informationen finden Sie in den xargs Manpage:

$ man xargs 

Ein T-Stück Der Befehl liest von der Standardeingabe und schreibt in die Standardausgabe und in Dateien. Wir können zeigen, wie te funktioniert wie folgt:

$ echo "Testing how tee command works" | tee file1 

Datei- oder Textfilter werden häufig mit Pipes für effektive Linux-Dateioperationen verwendet, um Informationen auf leistungsstarke Weise zu verarbeiten, z. B. die Umstrukturierung der Ausgabe von Befehlen (dies kann für die Erstellung nützlicher Linux-Berichte von entscheidender Bedeutung sein), das Ändern von Text in Dateien sowie verschiedene andere Linux-Systemverwaltungen Aufgaben.

Um mehr über Linux-Filter und Pipes zu erfahren, lesen Sie diesen Artikel Find Top 10 IP Addresses Accessing Apache Server, zeigt ein nützliches Beispiel für die Verwendung von Filtern und Pipes.

In diesem Artikel haben wir die Grundlagen der I/O-Umleitung in Linux erklärt. Denken Sie daran, Ihre Gedanken über den Feedback-Bereich unten mitzuteilen.


Linux
  1. So speichern Sie die Befehlsausgabe in einer Datei unter Linux

  2. Arbeiten mit Eingabeausgabe und Fehlerumleitung in Linux

  3. So verwenden Sie den Tar-Befehl unter Linux

  4. So erfassen Sie Terminalsitzungen und geben sie mit dem Linux-Skriptbefehl aus

  5. Eingabe-/Ausgabeumleitung in Linux/Unix

So verwenden Sie den md5sum-Befehl unter Linux

So verwenden Sie den Touch-Befehl unter Linux

So verwenden Sie den Linux-Kopfbefehl

So verwenden Sie den Linux-diff-Befehl

Eingabe-Ausgabe-Umleitung unter Linux erklärt

Wie kann ich die Ausgabe einer Shell-Anwendung in Linux ausblenden?