<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.foxtom.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ramez</id>
	<title>Foxwiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.foxtom.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ramez"/>
	<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php/Spezial:Beitr%C3%A4ge/Ramez"/>
	<updated>2026-06-02T22:24:36Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=7123</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=7123"/>
		<updated>2019-12-02T09:04:22Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* tee und xargs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde.&lt;br /&gt;
 *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwen&lt;br /&gt;
det werden kann&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;stidin ist Eingabe,stdout und stderr Ausgabe &#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was konnen wir machen mit tee und xargs?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf  der Konsole und in einer Textdatei ausgegeben werden.&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6692</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6692"/>
		<updated>2019-11-19T10:17:33Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwen&lt;br /&gt;
det werden kann&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;stidin ist Eingabe,stdout und stderr Ausgabe &#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was konnen wir machen mit tee und xargs?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf  der Konsole und in einer Textdatei ausgegeben werden.&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6675</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6675"/>
		<updated>2019-11-19T09:56:15Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwen&lt;br /&gt;
det werden kann&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;stidin ist Eingabe,stdout und stderr Ausgabe &#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;was konnen wir machen mit tee und xargs?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf  der Konsole und in einer Textdatei ausgegeben werden.&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6667</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6667"/>
		<updated>2019-11-19T09:51:34Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwen&lt;br /&gt;
det werden kann&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;stidin ist &#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;was konnen wir machen mit tee und xargs?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf  der Konsole und in einer Textdatei ausgegeben werden.&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6649</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6649"/>
		<updated>2019-11-19T09:39:44Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwen&lt;br /&gt;
det werden kann&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6644</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6644"/>
		<updated>2019-11-19T09:35:00Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;Antwort&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 2&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6642</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6642"/>
		<updated>2019-11-19T09:26:21Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 1&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was machen pips?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 2&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was ist der unterschid zwischen stdin, stdout und stderr?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 3&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 4&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;keine&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6641</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6641"/>
		<updated>2019-11-19T09:21:44Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 1&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was ist pips?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 1&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was ist unterschidlich zwischen stdin, stdout und stderr?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6640</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6640"/>
		<updated>2019-11-19T09:18:12Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Kontrollfragen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Testfrage 1&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&#039;&#039;Was ist pips?&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6639</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6639"/>
		<updated>2019-11-19T09:13:00Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stdin, stdout und stderr==&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
== tee und xargs ==&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
= Kontrollfragen=&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6638</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6638"/>
		<updated>2019-11-19T09:06:57Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Pipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=stdin, stdout und stderr= &lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=Umleitungen (Redirects)=&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
= Pipes =&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
 archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. Das liegt daran,dass tr weder eine Eingabedatei noch eine Ausgabedatei103GNU- und Unix-Kommandos134&lt;br /&gt;
als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus  dem  Programm  cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die&lt;br /&gt;
entsprechende Zieldatei:&lt;br /&gt;
 archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
= tee und xargs =&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6635</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6635"/>
		<updated>2019-11-19T08:58:49Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
&lt;br /&gt;
In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=stdin, stdout und stderr= &lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]]&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;stdin:&#039;&#039;&#039; Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&#039;&#039;&#039;stdout:&#039;&#039;&#039; Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&#039;&#039;&#039;stderr:&#039;&#039;&#039; Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=Umleitungen (Redirects)=&lt;br /&gt;
Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
Beliebt hierfür ist das Programm mail.&lt;br /&gt;
Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
 archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
= Pipes =&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
= tee und xargs =&lt;br /&gt;
&lt;br /&gt;
Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen.&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6618</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6618"/>
		<updated>2019-11-19T08:07:52Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* tee und xargs: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
== stdin, stdout und stderr  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
*stdout Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
*stderr:Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
*Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
*Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
&lt;br /&gt;
*Befehle haben einen Eingang (STDIN) und zwei Arten von Ausgängen.&lt;br /&gt;
* Standardausgang (STDOUT) und Standardfehler (STDERR).&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
STDIN&lt;br /&gt;
&lt;br /&gt;
 root@server~# read&lt;br /&gt;
&lt;br /&gt;
*Standardfehler werden (wie der Name schon sagt) für Fehlermeldungen verwendet. Da es sich bei dieser Nachricht nicht um eine Liste von Dateien handelt, wird sie an STDERR gesendet.&lt;br /&gt;
&lt;br /&gt;
STDIN, STDOUT und STDERR sind die drei Standardströme. Sie sind in der Shell durch eine Nummer und nicht durch einen Namen gekennzeichnet:&lt;br /&gt;
&lt;br /&gt;
0 = Standard in&lt;br /&gt;
1 = Standard aus&lt;br /&gt;
2 = Standardfehler&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist STDIN an die Tastatur angeschlossen, und STDOUT und STDERR werden im Terminal angezeigt.&lt;br /&gt;
* Wir können jedoch entweder STDOUT oder STDERR an das weiterleiten, was wir brauchen.&lt;br /&gt;
*Nehmen wir zum Beispiel an, dass Sie nur den Standard out benötigen und alle Fehlermeldungen, die auf dem Standardfehler gedruckt werden, unterdrückt werden sollen. Dann verwenden wir die Deskriptoren 1 und 2 .&lt;br /&gt;
&lt;br /&gt;
*Umleitung von STDERR nach / dev / null&lt;br /&gt;
&lt;br /&gt;
Nehmen wir das vorige Beispiel&lt;br /&gt;
&lt;br /&gt;
 root@server~# ls anotherfile 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
*In diesem Fall wird ein STDERR an / dev / null weitergeleitet (eine spezielle Datei, die alle darin enthaltenen Einträge ignoriert), so dass keine Fehlerausgabe in der Shell erfolgt.&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
*Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
*Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
*Beliebt hierfür ist das Programm mail.&lt;br /&gt;
*Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
*Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
*Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&lt;br /&gt;
*Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. *Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
== tee und xargs: ==&lt;br /&gt;
&lt;br /&gt;
*Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
*Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
*Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
*Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
*Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
*Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
*Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
*Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen&lt;br /&gt;
&lt;br /&gt;
[[category:Linux:LPIC:101]]&lt;br /&gt;
[[ Category : Linux ]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6613</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6613"/>
		<updated>2019-11-19T07:59:47Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* tee und xargs: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
== stdin, stdout und stderr  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
*stdout Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
*stderr:Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
*Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
*Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
&lt;br /&gt;
*Befehle haben einen Eingang (STDIN) und zwei Arten von Ausgängen.&lt;br /&gt;
* Standardausgang (STDOUT) und Standardfehler (STDERR).&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
STDIN&lt;br /&gt;
&lt;br /&gt;
 root@server~# read&lt;br /&gt;
&lt;br /&gt;
*Standardfehler werden (wie der Name schon sagt) für Fehlermeldungen verwendet. Da es sich bei dieser Nachricht nicht um eine Liste von Dateien handelt, wird sie an STDERR gesendet.&lt;br /&gt;
&lt;br /&gt;
STDIN, STDOUT und STDERR sind die drei Standardströme. Sie sind in der Shell durch eine Nummer und nicht durch einen Namen gekennzeichnet:&lt;br /&gt;
&lt;br /&gt;
0 = Standard in&lt;br /&gt;
1 = Standard aus&lt;br /&gt;
2 = Standardfehler&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist STDIN an die Tastatur angeschlossen, und STDOUT und STDERR werden im Terminal angezeigt.&lt;br /&gt;
* Wir können jedoch entweder STDOUT oder STDERR an das weiterleiten, was wir brauchen.&lt;br /&gt;
*Nehmen wir zum Beispiel an, dass Sie nur den Standard out benötigen und alle Fehlermeldungen, die auf dem Standardfehler gedruckt werden, unterdrückt werden sollen. Dann verwenden wir die Deskriptoren 1 und 2 .&lt;br /&gt;
&lt;br /&gt;
*Umleitung von STDERR nach / dev / null&lt;br /&gt;
&lt;br /&gt;
Nehmen wir das vorige Beispiel&lt;br /&gt;
&lt;br /&gt;
 root@server~# ls anotherfile 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
*In diesem Fall wird ein STDERR an / dev / null weitergeleitet (eine spezielle Datei, die alle darin enthaltenen Einträge ignoriert), so dass keine Fehlerausgabe in der Shell erfolgt.&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
*Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
*Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
*Beliebt hierfür ist das Programm mail.&lt;br /&gt;
*Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
*Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
*Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&lt;br /&gt;
*Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. *Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
== tee und xargs: ==&lt;br /&gt;
&lt;br /&gt;
*Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
*Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
*Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
*Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
*Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
*Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
*Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
*Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen&lt;br /&gt;
&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6437</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6437"/>
		<updated>2019-11-15T08:36:58Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Beispiel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
== stdin, stdout und stderr  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
*stdout Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
*stderr:Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
*Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
*Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
&lt;br /&gt;
*Befehle haben einen Eingang (STDIN) und zwei Arten von Ausgängen.&lt;br /&gt;
* Standardausgang (STDOUT) und Standardfehler (STDERR).&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
STDIN&lt;br /&gt;
&lt;br /&gt;
 root@server~# read&lt;br /&gt;
&lt;br /&gt;
*Standardfehler werden (wie der Name schon sagt) für Fehlermeldungen verwendet. Da es sich bei dieser Nachricht nicht um eine Liste von Dateien handelt, wird sie an STDERR gesendet.&lt;br /&gt;
&lt;br /&gt;
STDIN, STDOUT und STDERR sind die drei Standardströme. Sie sind in der Shell durch eine Nummer und nicht durch einen Namen gekennzeichnet:&lt;br /&gt;
&lt;br /&gt;
0 = Standard in&lt;br /&gt;
1 = Standard aus&lt;br /&gt;
2 = Standardfehler&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist STDIN an die Tastatur angeschlossen, und STDOUT und STDERR werden im Terminal angezeigt.&lt;br /&gt;
* Wir können jedoch entweder STDOUT oder STDERR an das weiterleiten, was wir brauchen.&lt;br /&gt;
*Nehmen wir zum Beispiel an, dass Sie nur den Standard out benötigen und alle Fehlermeldungen, die auf dem Standardfehler gedruckt werden, unterdrückt werden sollen. Dann verwenden wir die Deskriptoren 1 und 2 .&lt;br /&gt;
&lt;br /&gt;
*Umleitung von STDERR nach / dev / null&lt;br /&gt;
&lt;br /&gt;
Nehmen wir das vorige Beispiel&lt;br /&gt;
&lt;br /&gt;
 root@server~# ls anotherfile 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
*In diesem Fall wird ein STDERR an / dev / null weitergeleitet (eine spezielle Datei, die alle darin enthaltenen Einträge ignoriert), so dass keine Fehlerausgabe in der Shell erfolgt.&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
*Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
*Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
*Beliebt hierfür ist das Programm mail.&lt;br /&gt;
*Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
*Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
*Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&lt;br /&gt;
*Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. *Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
== tee und xargs: ==&lt;br /&gt;
&lt;br /&gt;
*Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
*Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
*Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
*Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
*Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
*Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
*Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
*Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6435</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6435"/>
		<updated>2019-11-15T08:21:31Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Beispiel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
== stdin, stdout und stderr  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
*stdout Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
*stderr:Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
*Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
*Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
&lt;br /&gt;
*Befehle haben einen Eingang (STDIN) und zwei Arten von Ausgängen.&lt;br /&gt;
* Standardausgang (STDOUT) und Standardfehler (STDERR).&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
STDIN&lt;br /&gt;
&lt;br /&gt;
 root@server~# read&lt;br /&gt;
&lt;br /&gt;
 Type some text here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Die Standardeingabe dient zur Eingabe eines Programms. (Hier verwenden wir das read Builtin , um eine Zeile aus STDIN zu lesen.)&lt;br /&gt;
&lt;br /&gt;
STDOUT&lt;br /&gt;
&lt;br /&gt;
  root@server~# ls file file&lt;br /&gt;
&lt;br /&gt;
*Die Standardausgabe wird im Allgemeinen für die &amp;quot;normale&amp;quot; Ausgabe eines Befehls verwendet. Zum Beispiel ls listet die Dateien, so werden die Dateien an STDOUT gesendet.&lt;br /&gt;
&lt;br /&gt;
STDERR:&lt;br /&gt;
&lt;br /&gt;
 root@server~# ls anotherfile&lt;br /&gt;
&lt;br /&gt;
ls: cannot access &#039;anotherfile&#039;: No such file or directory&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Standardfehler werden (wie der Name schon sagt) für Fehlermeldungen verwendet. Da es sich bei dieser Nachricht nicht um eine Liste von Dateien handelt, wird sie an STDERR gesendet.&lt;br /&gt;
&lt;br /&gt;
STDIN, STDOUT und STDERR sind die drei Standardströme. Sie sind in der Shell durch eine Nummer und nicht durch einen Namen gekennzeichnet:&lt;br /&gt;
&lt;br /&gt;
0 = Standard in&lt;br /&gt;
1 = Standard aus&lt;br /&gt;
2 = Standardfehler&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist STDIN an die Tastatur angeschlossen, und STDOUT und STDERR werden im Terminal angezeigt.&lt;br /&gt;
* Wir können jedoch entweder STDOUT oder STDERR an das weiterleiten, was wir brauchen.&lt;br /&gt;
*Nehmen wir zum Beispiel an, dass Sie nur den Standard out benötigen und alle Fehlermeldungen, die auf dem Standardfehler gedruckt werden, unterdrückt werden sollen. Dann verwenden wir die Deskriptoren 1 und 2 .&lt;br /&gt;
&lt;br /&gt;
 Umleitung von STDERR nach / dev / null&lt;br /&gt;
&lt;br /&gt;
Nehmen wir das vorige Beispiel&lt;br /&gt;
&lt;br /&gt;
 root@server~# ls anotherfile 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
 root@server~#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*In diesem Fall wird ein STDERR an / dev / null weitergeleitet (eine spezielle Datei, die alle darin enthaltenen Einträge ignoriert), so dass keine Fehlerausgabe in der Shell erfolgt.&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
*Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
*Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
*Beliebt hierfür ist das Programm mail.&lt;br /&gt;
*Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
*Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
*Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&lt;br /&gt;
*Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. *Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
== tee und xargs: ==&lt;br /&gt;
&lt;br /&gt;
*Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
*Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
*Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
*Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
*Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
*Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
*Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
*Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6434</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6434"/>
		<updated>2019-11-15T08:20:15Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
== stdin, stdout und stderr  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programmelesen werden.&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
*stdout Über die Standardausgabe kann ein Programm Daten ausgeben Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
gleichbedeutend:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
*stderr:Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben.&lt;br /&gt;
*Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden.&lt;br /&gt;
*Beispiel : Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird. &lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
&lt;br /&gt;
*Befehle haben einen Eingang (STDIN) und zwei Arten von Ausgängen.&lt;br /&gt;
* Standardausgang (STDOUT) und Standardfehler (STDERR).&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
STDIN&lt;br /&gt;
&lt;br /&gt;
 root@server~# read&lt;br /&gt;
&lt;br /&gt;
Type some text here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Die Standardeingabe dient zur Eingabe eines Programms. (Hier verwenden wir das read Builtin , um eine Zeile aus STDIN zu lesen.)&lt;br /&gt;
&lt;br /&gt;
STDOUT&lt;br /&gt;
&lt;br /&gt;
root@server~# ls file&lt;br /&gt;
&lt;br /&gt;
file&lt;br /&gt;
&lt;br /&gt;
*Die Standardausgabe wird im Allgemeinen für die &amp;quot;normale&amp;quot; Ausgabe eines Befehls verwendet. Zum Beispiel ls listet die Dateien, so werden die Dateien an STDOUT gesendet.&lt;br /&gt;
&lt;br /&gt;
STDERR:&lt;br /&gt;
&lt;br /&gt;
root@server~# ls anotherfile&lt;br /&gt;
&lt;br /&gt;
ls: cannot access &#039;anotherfile&#039;: No such file or directory&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Standardfehler werden (wie der Name schon sagt) für Fehlermeldungen verwendet. Da es sich bei dieser Nachricht nicht um eine Liste von Dateien handelt, wird sie an STDERR gesendet.&lt;br /&gt;
&lt;br /&gt;
STDIN, STDOUT und STDERR sind die drei Standardströme. Sie sind in der Shell durch eine Nummer und nicht durch einen Namen gekennzeichnet:&lt;br /&gt;
&lt;br /&gt;
0 = Standard in&lt;br /&gt;
1 = Standard aus&lt;br /&gt;
2 = Standardfehler&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist STDIN an die Tastatur angeschlossen, und STDOUT und STDERR werden im Terminal angezeigt.&lt;br /&gt;
* Wir können jedoch entweder STDOUT oder STDERR an das weiterleiten, was wir brauchen.&lt;br /&gt;
*Nehmen wir zum Beispiel an, dass Sie nur den Standard out benötigen und alle Fehlermeldungen, die auf dem Standardfehler gedruckt werden, unterdrückt werden sollen. Dann verwenden wir die Deskriptoren 1 und 2 .&lt;br /&gt;
&lt;br /&gt;
Umleitung von STDERR nach / dev / null&lt;br /&gt;
&lt;br /&gt;
Nehmen wir das vorige Beispiel&lt;br /&gt;
&lt;br /&gt;
root@server~# ls anotherfile 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
root@server~#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*In diesem Fall wird ein STDERR an / dev / null weitergeleitet (eine spezielle Datei, die alle darin enthaltenen Einträge ignoriert), so dass keine Fehlerausgabe in der Shell erfolgt.&lt;br /&gt;
&lt;br /&gt;
==Umleitungen (Redirects)==&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; .&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt; die   normalen  Meldungen   des  Programms und &amp;lt;code&amp;gt;1&amp;gt;erfolg.log&amp;lt;/code&amp;gt;  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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos i &amp;lt;code&amp;gt;1&amp;gt;script-xy&amp;gt;protokolldate&amp;lt;/code&amp;gt; sorgt  für  die  Umleitung von stdout in die Textdatei.&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;gt;2&amp;gt;&amp;amp;1leitet&amp;lt;/code&amp;gt; stderr auf stdoutum.&lt;br /&gt;
*Das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; besagt, dass &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;  Standardfehlerkanal  in  die  Datei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;lt;code&amp;gt;&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
 archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
*Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten.&lt;br /&gt;
*Beliebt hierfür ist das Programm mail.&lt;br /&gt;
*Das folgende Kommando sendet den kompletten Sys-log per Mail an einen kompetenten Mitarbeiter.&lt;br /&gt;
*Der Betreff lautet »Überprüfen!« und der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|350px|thumb|PIPE]] &lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus. &lt;br /&gt;
*Sie  sorgen  vielmehr dafür, dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann.&lt;br /&gt;
*Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout.Oft werden Umleitungen und Pipes auch miteinander kombiniert. *Sehr gebräuchlich ist die Umlenkung grösserer Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
== tee und xargs: ==&lt;br /&gt;
&lt;br /&gt;
*Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
 archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
*Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
 archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
 sort | uniq | xargs -n1 host&lt;br /&gt;
*Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
*Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. *Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert.&lt;br /&gt;
*Diese Spalte enthält die IP-Adressen der Besucher.&lt;br /&gt;
*Das Kommando sort sortiert die Liste der IP-Adressen. Mit uniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
*Diese Liste  kann  nicht  direkt  an  das  Kommando host zur  Namensauflösung  übergeben werden, weil host nur ein einzelnes Argument erwartet.&lt;br /&gt;
*Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargsfür jede IP-Adresse einmal aufgerufen&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6386</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6386"/>
		<updated>2019-11-13T14:15:29Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* tee und xargs: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep.&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, 1&amp;gt;erfolg.log die   normalen  Meldungen   des  Programms und   2&amp;gt;fehler.log  die Fehlermeldungen in je eine Datei um.&lt;br /&gt;
*Wenn nur eine&lt;br /&gt;
*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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei.&lt;br /&gt;
*2&amp;gt;&amp;amp;1leitet stderr auf stdoutum.&lt;br /&gt;
*Das &amp;amp; besagt, dass 1keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
*Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
*Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks.&lt;br /&gt;
* In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oder aus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. &lt;br /&gt;
*Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die entsprechende Zieldatei:&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
*Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt.&lt;br /&gt;
* Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde.&lt;br /&gt;
* Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher.&lt;br /&gt;
* Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht.&lt;br /&gt;
* Diese Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument erwartet. Deshalb übergibt xargs die IP-Adressen einzeln.&lt;br /&gt;
* Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6385</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6385"/>
		<updated>2019-11-13T14:12:55Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Pipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep.&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, 1&amp;gt;erfolg.log die   normalen  Meldungen   des  Programms und   2&amp;gt;fehler.log  die Fehlermeldungen in je eine Datei um.&lt;br /&gt;
*Wenn nur eine&lt;br /&gt;
*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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei.&lt;br /&gt;
*2&amp;gt;&amp;amp;1leitet stderr auf stdoutum.&lt;br /&gt;
*Das &amp;amp; besagt, dass 1keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
*Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
*Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks.&lt;br /&gt;
* In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
*Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oder aus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programms direkt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programm tr. &lt;br /&gt;
*Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  die entsprechende Zieldatei:&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6384</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6384"/>
		<updated>2019-11-13T10:30:18Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep.&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, 1&amp;gt;erfolg.log die   normalen  Meldungen   des  Programms und   2&amp;gt;fehler.log  die Fehlermeldungen in je eine Datei um.&lt;br /&gt;
*Wenn nur eine&lt;br /&gt;
*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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei.&lt;br /&gt;
*2&amp;gt;&amp;amp;1leitet stderr auf stdoutum.&lt;br /&gt;
*Das &amp;amp; besagt, dass 1keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6382</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6382"/>
		<updated>2019-11-13T10:05:23Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
[[Datei:stdin-stdout-stderr.png|250px|thumb|stdin, stdout und stderr]] &lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep.&lt;br /&gt;
*Tritt ein  Fehler  auf, werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben.&lt;br /&gt;
*Sie können mit einer Kommandozeile wie der folgenden Standard meldungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
*Hierbei   lenken   das   Argument, 1&amp;gt;erfolg.log die   normalen  Meldungen   des  Programms und   2&amp;gt;fehler.log  die Fehlermeldungen in je eine Datei um.&lt;br /&gt;
*Wenn nur eine&lt;br /&gt;
*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:&lt;br /&gt;
&lt;br /&gt;
 archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
*Der  erste  Teil  des  Kommandos script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei.&lt;br /&gt;
*2&amp;gt;&amp;amp;1leitet stderr auf stdoutum.&lt;br /&gt;
*Das &amp;amp; besagt, dass 1keine Datei  ist.&lt;br /&gt;
*Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
*Wenn  Sie  einen  Standard-I/O  umleiten,  wird  die  Zieldatei,  wenn  diese  noch  nicht existiert, automatisch erstellt. *Sollten Sie dieselbe Umleitung noch einmal durchführen, wird die ursprüngliche Datei überschrieben.&lt;br /&gt;
*Um Daten an eine bestehende Dateianzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektor zeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt.&lt;br /&gt;
*Ist diese bereits vorhanden, wird sie gelöscht und neu erstellt.&lt;br /&gt;
*Sollten also Zieldatei und Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6380</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6380"/>
		<updated>2019-11-13T09:45:39Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Umleitungen (Redirects) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|250px|thumb|Pipe]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
*Umleitungen  werden  verwendet,  um  die  Standard-I/Os  entweder  in  eine  Datei  hinein  oder  aus  einer  Datei  heraus um zu lenken.&lt;br /&gt;
*Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern möchten, können Sie mittels grep im Syslognach solchen Meldungen suchen und diese dann mit einem Redirektor in eine andere Datei speichern:&lt;br /&gt;
&lt;br /&gt;
 archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
*Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep.&lt;br /&gt;
*Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6379</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6379"/>
		<updated>2019-11-13T09:38:05Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:pipe.gif|250px|thumb|Pipe]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6378</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6378"/>
		<updated>2019-11-13T09:34:53Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
[[Datei:pipe.gif|250px|thumb|Beispielbild]] &lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6321</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6321"/>
		<updated>2019-11-12T11:15:33Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
*Manchmal  kann  es  vorkommen,  dass  Sie  die  Ausgabe  eines  Programms  direkt  mit einem anderen Programm weiterverarbeiten müssen.&lt;br /&gt;
*In diesem Fall können Sie eine sogenannte Pipe(senkrechter  Strich)  verwenden.&lt;br /&gt;
*Mit  ihrer  Hilfe  ist  das  Zwischen-speichern der Ausgabe des ersten Programms in einer Datei zum Zweck,diese Datei dann mit dem zweiten Programm wieder einzulesen, unnötig.&lt;br /&gt;
*In  einem  anderen  Fall  erzeugt  ein  Programm  vielleicht  eine  Ausgabe  auf  dem  Bild-schirm, die Sie abspeichern wollen.&lt;br /&gt;
*In diesem Fall benötigen Sie eine Umleitung der Standardausgabe (Redirect).&lt;br /&gt;
*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.&lt;br /&gt;
*Diesmal mussallerdings die Standardeingabe umgeleitet (Redirect) werden&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
stdin-stdout-stderr.png|Beschreibung1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
 $ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
 $ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
 $ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6282</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6282"/>
		<updated>2019-11-11T13:54:42Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Pipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
stdin-stdout-stderr.png|Beschreibung1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|Beschreibung1&lt;br /&gt;
pipe.gif|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=Datei:Pipe.gif&amp;diff=6281</id>
		<title>Datei:Pipe.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=Datei:Pipe.gif&amp;diff=6281"/>
		<updated>2019-11-11T13:53:01Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6255</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6255"/>
		<updated>2019-11-11T13:22:17Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
stdin-stdout-stderr.png|Beschreibung1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6252</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6252"/>
		<updated>2019-11-11T13:16:58Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
stdin-stdout-stderr.png|Beschreibung1&lt;br /&gt;
Beispiel.jpg|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eiBeispiel.jpgngelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
file:///home/ramezalfarhat/Bilder/stdin-stdout-stderr.png&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6244</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6244"/>
		<updated>2019-11-11T13:03:46Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Beispiel.jpg|Beschreibung1&lt;br /&gt;
68747470733a2f2f646f63732e676f6f676c652e636f6d2f64726177696e67732f642f3169655449476b3539306a79684f596b3263654c6354782d466e44366361474c4b587955594241656b5275512f7075623f773d36393026683d333633.png|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Beschreibung1&lt;br /&gt;
68747470733a2f2f646f63732e676f6f676c652e636f6d2f64726177696e67732f642f3169655449476b3539306a79684f596b3263654c6354782d466e44366361474c4b587955594241656b5275512f7075623f773d36393026683d333633.png|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=Datei:Stdin-stdout-stderr.png&amp;diff=6234</id>
		<title>Datei:Stdin-stdout-stderr.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=Datei:Stdin-stdout-stderr.png&amp;diff=6234"/>
		<updated>2019-11-11T12:55:12Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6232</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6232"/>
		<updated>2019-11-11T12:54:34Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Beispiel.jpg|Beschreibung1&lt;br /&gt;
Beispiel.jpg|Beschreibung2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6214</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6214"/>
		<updated>2019-11-11T12:43:14Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
==== tee und xargs: ====&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6210</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6210"/>
		<updated>2019-11-11T12:41:13Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Pipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6202</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6202"/>
		<updated>2019-11-11T12:39:17Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Pipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
Anonyme Pipes:&lt;br /&gt;
Pipes sind unter Unix und unixoiden Betriebssystemen eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmten Datenbestand zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Bei einer anonymen Pipe ist die Kommunikation dabei auf mehrere Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines „|“-Zeichens erzeugt. Die Shell ist dann der (gemeinsame) Elternprozess aller Prozesse und erledigt die Forks automatisch.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
grep &#039;.sshd.*Invalid user&#039; /var/log/messages | awk &#039;{print $NF}&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6196</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6196"/>
		<updated>2019-11-11T12:38:17Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
==== Pipes ====&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6183</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6183"/>
		<updated>2019-11-11T12:31:08Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6182</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6182"/>
		<updated>2019-11-11T12:30:11Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6178</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6178"/>
		<updated>2019-11-11T12:29:18Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* stdin, stdout und stderr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
Über die Standardausgabe kann ein Programm Daten ausgeben&lt;br /&gt;
Beispiel:&lt;br /&gt;
$ find . -name &#039;*.html&#039; &amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 1&amp;gt; ausgaben.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*stderr:&lt;br /&gt;
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben. Normalerweise ist er ebenfalls mit dem Monitor verbunden&lt;br /&gt;
&lt;br /&gt;
$ find . -name &#039;*.html&#039; 2&amp;gt; fehlermeldungen.txt | less&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6167</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6167"/>
		<updated>2019-11-11T12:20:34Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
&lt;br /&gt;
*stderr&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[category:lPIC101]]&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6160</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6160"/>
		<updated>2019-11-11T12:17:07Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*stdout &lt;br /&gt;
&lt;br /&gt;
*stderr&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6158</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6158"/>
		<updated>2019-11-11T12:15:53Z</updated>

		<summary type="html">&lt;p&gt;Ramez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
==== stdin, stdout und stderr  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* stdin: Über die Standardeingabe können Daten in ein Programm eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
$ less &amp;lt; eingaben.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
stdout &lt;br /&gt;
stderr&lt;br /&gt;
&lt;br /&gt;
=== Umleitungen (Redirects) ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6109</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6109"/>
		<updated>2019-11-01T12:51:57Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
[[Pipes:]]&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6108</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6108"/>
		<updated>2019-11-01T12:49:32Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
Pipes:&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;br /&gt;
&lt;br /&gt;
tee und xargs:&lt;br /&gt;
&lt;br /&gt;
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussgetränk zu  tun,  sondern  eher  mit  einem  T-Stück. Mit tee kann  der  Datenstrom  eines  Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep pppd /var/log/syslog | tee pppdmessages&lt;br /&gt;
&lt;br /&gt;
Mit xargs können Sie die Ergebnisse eines Programms, das eine mehrzeilige Ausgabeliefert, an ein Programm übergeben, das immer nur ein Argument gleichzeitig verarbeiten kann. Beispiel:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # cut -d &amp;quot; &amp;quot; -f1 /var/log/apache2/access.log |\&lt;br /&gt;
sort | uniq | xargs -n1 host&lt;br /&gt;
&lt;br /&gt;
Das Kommando wurde der Übersichtlichkeit halber mit dem Backslash auf zwei Zeilen aufgeteilt. Zur Erklärung: Mit diesem Kommando soll überprüft werden, von welchen Domänen aus auf einen Webserver zugegriffen wurde. Zunächst wird mit dem cut-Befehl die erste Spalte des access.log von Apache isoliert. Diese Spalte enthält die&lt;br /&gt;
IP-Adressen der Besucher. Das Kommando sort sortiert die Liste der IP-Adressen. Mituniq wird dafür gesorgt, dass jede IP-Adresse nur einmal in der Liste auftaucht. Diese&lt;br /&gt;
Liste  kann  nicht  direkt  an  das  Kommando  host zur  Namensauflösung  übergebenwerden, weil host nur ein einzelnes Argument &lt;br /&gt;
erwartet. Deshalb übergibt xargs die IP-Adressen einzeln. Das Kommando host wird also durch xargs für jede IP-Adresse&lt;br /&gt;
einmal aufgerufen.&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6106</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6106"/>
		<updated>2019-11-01T12:42:54Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
Pipes:&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausgabedatei als Argument übergeben werden kann. Deshalb erfolgt die Eingabe oft mittels einer Pipe  aus dem  Programm  &lt;br /&gt;
cat heraus  und  die  Ausgabe  mit  einer  Umlenkung  in  dieentsprechende Zieldatei:&lt;br /&gt;
&lt;br /&gt;
archangel:/textfiles # cat textfile1 | tr \n \r &amp;gt; textfile2&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6105</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6105"/>
		<updated>2019-11-01T12:39:13Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
Pipes:&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Umleitungen lenken Pipes Datenströme nicht in Dateien um oderaus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programmsdirekt als Eingabe für ein anderes Programm verwendet werden kann. Die Ausgabe des ersten Programms er folgt dann nicht nach stdout. Oft werden Umleitungen und Pipes auch miteinander kombiniert. Sehr gebräuchlich ist die Umlenkung größererm Textmengen nach less. Das folgende Kommando würde möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos überhaupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an less weitergegeben:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipes verwendet z. B. üblicherweise das Programmtr. Das liegt daran, dass tr&lt;br /&gt;
 weder eine Eingabedatei noch eine Ausgabedatei&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6103</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6103"/>
		<updated>2019-11-01T12:35:26Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;br /&gt;
&lt;br /&gt;
Pipes&lt;br /&gt;
Im Gegensatz zu Umleitunge&lt;br /&gt;
n lenken Pipes Datenströme &lt;br /&gt;
nicht in Dateien um oder&lt;br /&gt;
aus  Dateien  heraus.  Sie  sorgen  vielmehr  &lt;br /&gt;
dafür,  dass  die  Ausgabe  eines  Programms&lt;br /&gt;
direkt als Eingabe fü&lt;br /&gt;
r ein anderes Programm verwen&lt;br /&gt;
det werden kann. Die Ausgabe&lt;br /&gt;
des ersten Programms er&lt;br /&gt;
folgt dann nicht nach &lt;br /&gt;
stdout&lt;br /&gt;
. Oft werden Umleitungen und&lt;br /&gt;
Pipes auch miteinander komb&lt;br /&gt;
iniert. Sehr gebräuchlich ist die Umlenkung größerer&lt;br /&gt;
Textmengen nach &lt;br /&gt;
less&lt;br /&gt;
. Das folgende Kommando würd&lt;br /&gt;
e möglicherweise eine solche&lt;br /&gt;
größere Textmenge verursachen:&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog&lt;br /&gt;
Damit Sie die Ausgabe des Kommandos über&lt;br /&gt;
haupt komplett lesen können, wird sie&lt;br /&gt;
einfach mit einer Pipe an &lt;br /&gt;
less&lt;br /&gt;
 weitergegeben:&lt;br /&gt;
archangel:/ # grep &amp;quot;kernel&amp;quot; /var/log/syslog | less&lt;br /&gt;
Eine Kombination aus Umleitungen und Pipe&lt;br /&gt;
s verwendet z. B. üblicherweise das Pro-&lt;br /&gt;
gramm &lt;br /&gt;
tr&lt;br /&gt;
. Das liegt daran, dass &lt;br /&gt;
tr&lt;br /&gt;
 weder eine Eingabedatei noch eine Ausgabedatei&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6101</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6101"/>
		<updated>2019-11-01T12:33:17Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
* Aufgezählter Listeneintrag Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
* Aufgezählter Listeneintrag Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6100</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6100"/>
		<updated>2019-11-01T12:20:58Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
&lt;br /&gt;
Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando1&amp;gt;Zieldatei (überschreibend)&lt;br /&gt;
Kommando&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Kommando1&amp;gt;&amp;gt;Zieldatei(anhängend)&lt;br /&gt;
Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
&lt;br /&gt;
Kommando2&amp;gt;Zieldatei(überschreibend)&lt;br /&gt;
Kommando2&amp;gt;&amp;gt;Zieldatei (anhängend)&lt;br /&gt;
&lt;br /&gt;
Um beide Ausgabekanäle umzulenken, verwenden Sie:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;gt;Zieldatei2&amp;gt;&amp;amp;1(gemeinsame Zieldatei)&lt;br /&gt;
Kommando1&amp;gt;ZieldateiA2&amp;gt;ZieldateiB(getrennte Zieldateien)&lt;br /&gt;
&lt;br /&gt;
Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:&lt;br /&gt;
&lt;br /&gt;
Kommando&amp;lt;Quelldatei&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
	<entry>
		<id>https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6097</id>
		<title>LPIC101/103.4 Ströme, Pipes und Umleitungen verwenden</title>
		<link rel="alternate" type="text/html" href="https://wiki.foxtom.de/index.php?title=LPIC101/103.4_Str%C3%B6me,_Pipes_und_Umleitungen_verwenden&amp;diff=6097"/>
		<updated>2019-11-01T12:10:28Z</updated>

		<summary type="html">&lt;p&gt;Ramez: /* Allgemeines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Allgemeines==&lt;br /&gt;
Manchmal  kann  es  vorkommen,  dass  Sie  &lt;br /&gt;
die  Ausgabe  eines  Programms  direkt  mit&lt;br /&gt;
einem anderen Programm weiterverarbeiten müssen. In diesem Fall können Sie eine&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
stdin, stdout und stderr &lt;br /&gt;
Immer wenn unter Linux ein Programm ausgeführt wird, erhält dieses Informationen über drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:&lt;br /&gt;
&lt;br /&gt;
#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.&lt;br /&gt;
#Standardausgabekanal(stdout) ist normalerweise ein Terminal. Viele Programmemachen ihre Ausgaben direkt nach stdout.stdout entspricht dem Dateideskriptor 1.&lt;br /&gt;
#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.&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Umleitungen (Redirects)&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Trittein  Fehler  auf,  werden  die  entsprechenden Meldungen  weiterhin  auf  der  Konsole&lt;br /&gt;
ausgegeben. Sie können mit einer Kommandozeile wie der folgenden Standardmel-dungen und Fehlermeldungen in zwei &lt;br /&gt;
unterschiedlichen Dateien aufzeichnen:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy 2&amp;gt;fehler.log 1&amp;gt;erfolg.log&lt;br /&gt;
&lt;br /&gt;
Hierbei   lenken   das   Argument   1&amp;gt;erfolg.log die   normalen   Meldungen   des   Pro-gramms und 2&amp;gt;fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur eine&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
archangel:/scripts # script-xy &amp;gt;protokolldatei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Der  erste  Teil  des  Kommandos  script-xy&amp;gt;protokolldatei sorgt  für  die  Umleitung von stdout&lt;br /&gt;
in die Textdatei. 2&amp;gt;&amp;amp;1leitet stderr auf stdoutum. Das &amp;amp; besagt, dass 1keine Datei  ist.  Das  Kommando  würde  ohne  das  &amp;amp; den  Standardfehlerkanal  in  die  Datei 1umleiten.&lt;br /&gt;
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&lt;br /&gt;
anzuhängen, die für Umleitungen verwendet wird, müssen Sie einfach zwei Redirektorzeichen verwenden (&amp;gt;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
archangel:/diag # grep kernel /var/log/syslog &amp;gt;&amp;gt; kernelmessages&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nur einen einzelne&lt;br /&gt;
n Redirektor verwenden, wird gleich zu Beginn der Programm ausführung die Zieldatei erstellt. Ist diese bereits vorhanden, wird sie gelöscht&lt;br /&gt;
und neu erstellt. Sollten also Zieldatei und &lt;br /&gt;
Eingabedatei identisch sein, ist ein Daten verlust garantiert. Das folgende Kommando hat demnach eine leere Kundendatenbank zur Folge:&lt;br /&gt;
&lt;br /&gt;
archangel:/db # grep &amp;quot;Meier&amp;quot; kunden-db &amp;gt; kunden-db&lt;br /&gt;
&lt;br /&gt;
103.4&lt;br /&gt;
Ströme, Pipes und Umleitungen verwenden&lt;br /&gt;
133&lt;br /&gt;
Es besteht aber auch die Möglichkeit, den Standardeingabekanal umzuleiten. Beliebt&lt;br /&gt;
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&lt;br /&gt;
der Inhalt der Datei erscheint im Textkörper der Mail:&lt;br /&gt;
&lt;br /&gt;
archangel:/ # mail -s &amp;quot;Überprüfen!&amp;quot; willi &amp;lt; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
Zusammenfassung:&lt;br /&gt;
�&lt;br /&gt;
Um die Standardausgabe umzulenk&lt;br /&gt;
en, verwenden Sie diese Syntax:&lt;br /&gt;
Kommando&lt;br /&gt;
&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
 (überschreibend)&lt;br /&gt;
Kommando&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
 (überschreibend)&lt;br /&gt;
Kommando&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
 (anhängend)&lt;br /&gt;
Kommando&lt;br /&gt;
1&amp;gt;&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
 (anhängend)&lt;br /&gt;
�&lt;br /&gt;
Um den Standardfehlerkanal umzulenken, verwenden Sie:&lt;br /&gt;
Kommando&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
 (überschreibend)&lt;br /&gt;
Kommando&lt;br /&gt;
2&amp;gt;&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
 (anhängend)&lt;br /&gt;
�&lt;br /&gt;
Um beide Ausgabekanäle um&lt;br /&gt;
zulenken, verwenden Sie:&lt;br /&gt;
Kommando&lt;br /&gt;
&amp;gt;&lt;br /&gt;
Zieldatei&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
 (gemeinsame Zieldatei)&lt;br /&gt;
Kommando&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
ZieldateiA&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
ZieldateiB&lt;br /&gt;
 (getrennte Zieldateien)&lt;br /&gt;
�&lt;br /&gt;
Um die Standardeingabe umzulenk&lt;br /&gt;
en, verwenden Sie diese Syntax:&lt;br /&gt;
Kommando&lt;br /&gt;
&amp;lt;&lt;br /&gt;
Quelldatei&lt;/div&gt;</summary>
		<author><name>Ramez</name></author>
	</entry>
</feed>