Bash Eingabe/Ausgabe

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Eingabe/Ausgabe

  • 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).

Std.jpg

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

Verknüpfung von cat und wc

  • cat < aus-err | wc -l
2

Übergeben der Ausgabe von tail als Eingabe für grep mit Hilfe der Pipe „|“

  • tail /var/log/auth.log | grep xinux
Jun 18 13:52:33 zero nss_wins[11433]: pam_unix(login:session): session closed for user xinux

Übergeben der letzten 100 Zeilen von syslog als Eingabe für grep

  • tail /var/log/syslog -n 100 | grep error
Jun 18 09:30:54 zero kernel: [154384.692135] end_request: I/O error, dev fd0, sector 0
Jun 18 09:30:54 zero kernel: [154384.712137] end_request: I/O error, dev fd0, sector 0

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 – Anhängen von Ausgaben

  • 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.
  • Prüfen Sie den Unterschied zwischen > und >>.
    • Wann ist welche Variante sinnvoll?

Aufgabe 3 – 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 4 – Pipes verwenden

  • Kombinieren Sie die Befehle cat und wc, um die Anzahl der Zeilen einer Datei /etc/passwd zu zählen.
  • Verwenden Sie dazu eine Pipe:
 ** cat /etc/passwd | wc -l
  • Testen Sie anschließend eine Variante ohne cat:
 ** wc -l < /etc/passwd
    • Welche Variante ist effizienter und warum?

Zusatzaufgabe – Standardausgabe und Fehler gemeinsam umleiten

  • Erstellen Sie ein Skript, das mehrere Befehle enthält, von denen einige Fehler erzeugen (z. B. ls /root und ls /tmp).
  • Leiten Sie sowohl Standardausgabe als auch Standardfehler in eine gemeinsame Datei um:
 ** bash skript > ausgabe.txt 2>&1
  • Analysieren Sie den Inhalt von ausgabe.txt.
    • Welche Ausgaben stammen von der Standardausgabe und welche vom Fehlerkanal?