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


