<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Bash_Eingabe%2C_Ausgabe_und_Pipes</id>
	<title>Bash Eingabe, Ausgabe und Pipes - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Bash_Eingabe%2C_Ausgabe_und_Pipes"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Bash_Eingabe,_Ausgabe_und_Pipes&amp;action=history"/>
	<updated>2026-06-29T05:11:06Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Bash_Eingabe,_Ausgabe_und_Pipes&amp;diff=64991&amp;oldid=prev</id>
		<title>Thomas.will: /* Symbolbild */</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Bash_Eingabe,_Ausgabe_und_Pipes&amp;diff=64991&amp;oldid=prev"/>
		<updated>2025-10-12T19:15:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Symbolbild&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 12. Oktober 2025, 19:15 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l67&quot; &gt;Zeile 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Symbolbild =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Symbolbild =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#drawio:std8}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#drawio:std8}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Die Pipe übergibt nur den Datenstrom, daher kennt '''wc''' beim obigen Befehl nicht den Dateinamen.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Die Pipe übergibt nur den Datenstrom, daher kennt '''wc''' beim obigen Befehl nicht den Dateinamen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Bash_Eingabe,_Ausgabe_und_Pipes&amp;diff=64990&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „ == Grundlagen der Datenströme == * '''Standardeingabe (0):''' Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastat…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Bash_Eingabe,_Ausgabe_und_Pipes&amp;diff=64990&amp;oldid=prev"/>
		<updated>2025-10-12T19:15:18Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ == Grundlagen der Datenströme == * &amp;#039;&amp;#039;&amp;#039;Standardeingabe (0):&amp;#039;&amp;#039;&amp;#039; Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastat…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Grundlagen der Datenströme ==&lt;br /&gt;
* '''Standardeingabe (0):''' Laufende Programme erwarten von hier ihre Eingaben (normalerweise handelt es sich um die Tastatur).&lt;br /&gt;
* '''Standardausgabe (1):''' Programme schreiben hier ihre Ausgaben hin (normalerweise der Bildschirm).&lt;br /&gt;
* '''Standardfehlerausgabe (2):''' Fehlerausgaben landen hier (Bildschirm, aber nur auf der aktiven Konsole).&lt;br /&gt;
&lt;br /&gt;
[[Bild:std.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Umleitungen ==&lt;br /&gt;
;cat  &lt;br /&gt;
Das Programm '''cat''' liest von '''STDIN''' und gibt auf '''STDOUT''' aus, solange bis das '''EOF'''-Zeichen kommt.&lt;br /&gt;
&lt;br /&gt;
* '''cat'''&lt;br /&gt;
 bla bla&lt;br /&gt;
 bla bla&lt;br /&gt;
&lt;br /&gt;
Einlesen der Datei '''dat'''&lt;br /&gt;
* '''cat &amp;lt; dat'''&lt;br /&gt;
 wichtig&lt;br /&gt;
&lt;br /&gt;
Schreiben in die Datei '''dat''' – überschreibt den bisherigen Inhalt der Datei:&lt;br /&gt;
* '''cat &amp;gt; dat'''&lt;br /&gt;
 sogar noch wichtiger &lt;br /&gt;
 &lt;br /&gt;
Ausgeben der Datei '''dat'''&lt;br /&gt;
* '''cat dat'''&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Lesen aus der Datei '''dat''' und Schreiben in die Datei '''neuedat'''&lt;br /&gt;
* '''cat &amp;lt; dat &amp;gt; neuedat'''&lt;br /&gt;
* '''cat &amp;lt; neuedat'''&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
&lt;br /&gt;
Anhängen der Ausgabe von '''date''' an die Datei '''neuedat'''&lt;br /&gt;
* '''date &amp;gt;&amp;gt; neuedat'''&lt;br /&gt;
* '''cat neuedat'''&lt;br /&gt;
 sogar noch wichtiger&lt;br /&gt;
 Do 18. Jun 14:08:58 CEST 2009&lt;br /&gt;
&lt;br /&gt;
Umleiten des Standardfehlerkanals nach '''error'''&lt;br /&gt;
* '''rm sux 2&amp;gt; error'''&lt;br /&gt;
* '''more error'''&lt;br /&gt;
 Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
&lt;br /&gt;
Zusammenlegen von Standardausgabe und Standardfehlerkanal&lt;br /&gt;
* '''touch tux'''&lt;br /&gt;
* '''rm -v sux tux &amp;gt; aus-err 2&amp;gt;&amp;amp;1'''&lt;br /&gt;
* '''cat &amp;lt; aus-err'''&lt;br /&gt;
 rm: Entfernen von „sux“ nicht möglich: No such file or directory&lt;br /&gt;
 „tux“ entfernt&lt;br /&gt;
&lt;br /&gt;
{{#drawio:std-err}}&lt;br /&gt;
&lt;br /&gt;
== Nacheinander auszuführende Kommandos ==&lt;br /&gt;
* '''pwd; date'''&lt;br /&gt;
 /root&lt;br /&gt;
 Do 18. Jun 14:13:05 CEST 2009&lt;br /&gt;
&lt;br /&gt;
== Pipes ==&lt;br /&gt;
* Die Bash-Pipe, symbolisiert durch das Vertikalstrich-Symbol &amp;quot;|&amp;quot;, verbindet mehrere Befehle, indem die Ausgabe des vorherigen Befehls als Eingabe für den nächsten Befehl dient.&lt;br /&gt;
* Dadurch lassen sich komplexe Befehlsketten erstellen, bei denen die Ausgabe eines Befehls direkt an einen anderen weitergeleitet wird.&lt;br /&gt;
* Bei der Pipe wird der Standard Output des Kommandos links zum Standard Input des Kommandos rechts übergeben.&lt;br /&gt;
* '''cat &amp;lt; /etc/passwd | wc -l'''&lt;br /&gt;
&lt;br /&gt;
 34&lt;br /&gt;
&lt;br /&gt;
= Symbolbild =&lt;br /&gt;
{{#drawio:std8}}&lt;br /&gt;
&lt;br /&gt;
* Die Pipe übergibt nur den Datenstrom, daher kennt '''wc''' beim obigen Befehl nicht den Dateinamen.&lt;br /&gt;
* '''wc -l /etc/passwd'''&lt;br /&gt;
&lt;br /&gt;
 34 /etc/passwd&lt;br /&gt;
&lt;br /&gt;
= Aufgaben =&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1 – Umleiten der Ausgabe ==&lt;br /&gt;
* Erstellen Sie eine Datei '''info.txt''' mit beliebigem Inhalt.&lt;br /&gt;
* Leiten Sie die Ausgabe des Befehls '''cat''' in eine neue Datei '''kopie.txt''' um.&lt;br /&gt;
* Überprüfen Sie anschließend den Inhalt von '''kopie.txt''' mit '''cat'''.&lt;br /&gt;
** Welche Auswirkung hat der Operator '''&amp;gt;'''?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2 – Fehlerausgabe umleiten ==&lt;br /&gt;
* Führen Sie den Befehl '''rm datei_does_not_exist''' aus und beobachten Sie die Ausgabe.&lt;br /&gt;
* Wiederholen Sie den Befehl mit Umleitung der Fehlerausgabe: '''rm datei_does_not_exist 2&amp;gt; fehler.txt'''.&lt;br /&gt;
* Untersuchen Sie den Inhalt der Datei '''fehler.txt'''.&lt;br /&gt;
** Wohin wurde die Fehlermeldung beim ersten bzw. beim zweiten Aufruf ausgegeben?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3 – Ausgabe anhängen ==&lt;br /&gt;
* Erstellen Sie eine Datei '''log.txt''' und schreiben Sie mit '''echo''' mehrere Zeilen hinein.&lt;br /&gt;
* Fügen Sie anschließend mit '''date &amp;gt;&amp;gt; log.txt''' den aktuellen Zeitstempel an.&lt;br /&gt;
** Wann ist das Überschreiben mit '''&amp;gt;''' sinnvoll, wann das Anhängen mit '''&amp;gt;&amp;gt;'''?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4 – Arbeiten mit Pipes ==&lt;br /&gt;
* Kombinieren Sie Befehle mit einer Pipe:&lt;br /&gt;
** '''cat /etc/passwd | wc -l'''&lt;br /&gt;
* Testen Sie anschließend die Variante ohne '''cat''':&lt;br /&gt;
** '''wc -l &amp;lt; /etc/passwd'''&lt;br /&gt;
** Welche Variante ist effizienter und warum?&lt;br /&gt;
&lt;br /&gt;
== Zusatzaufgabe – Filtern und Anzeigen ==&lt;br /&gt;
* Verwenden Sie Pipes, um gezielt Informationen zu filtern:&lt;br /&gt;
** Zeigen Sie alle Benutzer an, deren Login nicht deaktiviert ist:&lt;br /&gt;
   *** '''grep -v nologin /etc/passwd | grep -v /bin/false'''&lt;br /&gt;
** Zeigen Sie nur die IPv4-Adressen an:&lt;br /&gt;
   *** '''ip a | grep &amp;quot;inet &amp;quot; | tr -s &amp;quot; &amp;quot; | cut -f 3 -d &amp;quot; &amp;quot;'''&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>