LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden: Unterschied zwischen den Versionen

Aus Foxwiki
Ramez (Diskussion | Beiträge)
Ramez (Diskussion | Beiträge)
Zeile 40: Zeile 40:


Wenn Sie nur einen einzelne
Wenn Sie nur einen einzelne
n Redirektor verwenden, wird gleich zu Beginn der Pro-
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht
grammausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht
und neu erstellt. Sollten also Zieldatei und  
und neu erstellt. Sollten also Zieldatei und  
Eingabedatei identisch sein, ist ein Daten-
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:
verlust garantiert. Das folgende Komman
 
do hat demnach eine leere Kundendaten-
bank zur Folge:
archangel:/db # grep "Meier" kunden-db > kunden-db
archangel:/db # grep "Meier" kunden-db > kunden-db
103.4
Ströme, Pipes und Umleitungen verwenden
133
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt
hierfür ist das Programm mail. Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter. Der Betreff lautet »Überprüfen!« und
der Inhalt der Datei erscheint im Textkörper der Mail:
archangel:/ # mail -s "Überprüfen!" willi < /var/log/syslog
Zusammenfassung:
Um die Standardausgabe umzulenk
en, verwenden Sie diese Syntax:
Kommando
>
Zieldatei
(überschreibend)
Kommando
1>
Zieldatei
(überschreibend)
Kommando
>>
Zieldatei
(anhängend)
Kommando
1>>
Zieldatei
(anhängend)
Um den Standardfehlerkanal umzulenken, verwenden Sie:
Kommando
2>
Zieldatei
(überschreibend)
Kommando
2>>
Zieldatei
(anhängend)
Um beide Ausgabekanäle um
zulenken, verwenden Sie:
Kommando
>
Zieldatei
2>&1
(gemeinsame Zieldatei)
Kommando
1>
ZieldateiA
2>
ZieldateiB
(getrennte Zieldateien)
Um die Standardeingabe umzulenk
en, verwenden Sie diese Syntax:
Kommando
<
Quelldatei

Version vom 1. November 2019, 14:10 Uhr

Allgemeines

Manchmal kann es vorkommen, dass Sie die Ausgabe eines Programms direkt mit einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine sogenannte Pipe(senkrechter Strich) verwenden. Mit ihrer Hilfe ist das Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck, diese Dateidann mit dem zweiten Programmwieder einzulesen, unnötig. In einem anderen Fall erzeugt ein Programm vielleicht eine Ausgabe auf dem Bild-schirm, die Sie abspeichern wollen. In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect). Wenn ein Programm ausschließlich von der Standardeingabe (normalerweise dieTastatur) liest und Sie mit diesem Programm eine Datei einlesen müssen, benötigen Sie ebenfalls eine Umleitung. Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden

stdin, stdout und stderr Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:

  1. Standardeingabekanal(stdin) ist normalerweise die Tastatur.Viele Programme erwarten ihre Eingaben von stdin Es gibt aber auch, wie Sie schon oft gesehen haben, Programme, die stattdessen Dateien als Argumente erwarten. Diese Programme verwenden stdin nicht.stdin entspricht dem Dateideskriptor 0.
  2. Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.
  3. Standardfehlerkanal(stderr) ähnelt vom Verhalten her stdout, enthält aber nur die Fehlermeldungen eines Programms.Die Ausgabe des Fehlerkanals erfolgt norma-lerweise auch auf dem Terminal. stderrentspricht dem Dateideskriptor 2.

Dadurch, dass der Standardausgabekanal und der Standardfehlerkanal getrennt ver-waltet werden, ist es möglich, Fehlermeldungen von den normalen Ausgaben eines Programms zu trennen. Deshalb können Sie den Fehlerkanal z. B. in eine Fehlerpro-tokolldatei umlenken

Umleitungen (Redirects)

Umleitungen werden verwendet, um die Standard-I/Os entweder in eine Datei hi-nein oder aus einer Datei herausumzulenken. Das ist z. B. dann erforderlich, wennman einem Programm keine Dateien als Argumente übergeben kann. Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mit-tels grepim Syslognach solchen Meldungen suchen und diese dann mit einem Redi-rektor in eine andere Datei speichern:

archangel:/diag # grep kernel /var/log/syslog > kernelmessages

Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein Fehler auf, werden die entsprechenden Meldungen weiterhin auf der Konsole ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:

archangel:/scripts # script-xy 2>fehler.log 1>erfolg.log

Hierbei lenken das Argument 1>erfolg.log die normalen Meldungen des Pro-gramms und 2>fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine einzige Datei für die Aufzeichnung sowohl von stdout als auch stderr verwendet werden soll, können Sie auch ein Kommando wie das folgende verwenden:

archangel:/scripts # script-xy >protokolldatei 2>&1

Der erste Teil des Kommandos script-xy>protokolldatei sorgt für die Umleitung von stdout in die Textdatei. 2>&1leitet stderr auf stdoutum. Das & besagt, dass 1keine Datei ist. Das Kommando würde ohne das & den Standardfehlerkanal in die Datei 1umleiten. Wenn Sie einen Standard-I/O umleiten, wird die Zieldatei, wenn diese noch nichtexistiert, automatisch erstellt. Sollten Sie dieselbe Umleitung noch einmal durchfüh-ren, wird die ursprüngliche Datei überschrieben. Um Daten an eine bestehende Datei anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (>>).

archangel:/diag # grep kernel /var/log/syslog >> kernelmessages

Wenn Sie nur einen einzelne n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt. Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:

archangel:/db # grep "Meier" kunden-db > kunden-db

103.4 Ströme, Pipes und Umleitungen verwenden 133 Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt hierfür ist das Programm mail. Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter. Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:

archangel:/ # mail -s "Überprüfen!" willi < /var/log/syslog

Zusammenfassung: � Um die Standardausgabe umzulenk en, verwenden Sie diese Syntax: Kommando > Zieldatei

(überschreibend)

Kommando 1> Zieldatei

(überschreibend)

Kommando >> Zieldatei

(anhängend)

Kommando 1>> Zieldatei

(anhängend)

� Um den Standardfehlerkanal umzulenken, verwenden Sie: Kommando 2> Zieldatei

(überschreibend)

Kommando 2>> Zieldatei

(anhängend)

� Um beide Ausgabekanäle um zulenken, verwenden Sie: Kommando > Zieldatei 2>&1

(gemeinsame Zieldatei)

Kommando 1> ZieldateiA 2> ZieldateiB

(getrennte Zieldateien)

� Um die Standardeingabe umzulenk en, verwenden Sie diese Syntax: Kommando < Quelldatei