Registrieren
x

Log in

Benutzername:

Passwort:
 

oder Registrieren

  Passwort vergessen?



Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einführung in die Bash - Teil 2: Standard Kanäle und Pipes
24-01-2012, 11:58 AM (Dieser Beitrag wurde zuletzt bearbeitet: 25-01-2012 10:12 AM von Florian Reith.)
Beitrag #1
Information Einführung in die Bash - Teil 2: Standard Kanäle und Pipes
Einführung in die Bash - Teil 2: Standard Kanäle und Pipes

Standard Kanäle

Wie jede andere Shell auch, bringt die Bash drei Standard Kanäle zur Regulierung von Streams (Datenströmen) mit sich.
Man spricht hier von I/O bzw. Input/Output (Eingabe/Ausgabe).

[Bild: 4020820a81-STDStreamsbzw.Kanaele.png]

stdin (Kanal 0) - der Eingabekanal (Standard-Input)
Dieser Kanal empfängt Daten oder Eingaben und reicht sie an das Programm weiter.

stdout (Kanal 1) der Ausgabekanal (Standard-Output)
Dieser Kanal gibt die Daten aus, die ein Prozess zurückgibt.

stderr (Kanal 2) der Fehlerausgabekanal (Standard-Error)
Produziert ein Prozess einen Fehler, so wird dieser auf diesem Kanal ausgegeben.


Umleitung der Standard Kanäle (I/O Redirect)

[Bild: e321963b85-umleitung.png]

Die eben beschriebenen Standard Kanäle lassen sich nicht nur ausgeben sondern alternativ auch aus Dateien heraus bzw. in Dateien hinein umleiten (lesen/schreiben).

Beispiel 1 - Umleiten von stdout in eine Datei (überschreiben)

Die Dateien und Ordner in einem Verzeichnis sollen aufgelistet und das Ergebnis in die Datei "liste.txt" gespeichert werden.

Kommando:
Code:
ls 1> liste.txt
Beschreibung:
Der Kanal 1 (Standard Output bzw stdout) des Programms ls wird in die Datei liste.txt umgeleitet, welche vor dem eigentlichen Umleiten erstellt wird.

Exclamation Hinweis: Existiert diese Datei, wird sie überschrieben!



Beispiel 2 - Umleiten von stdout in eine Datei (anhängen)

Die Dateien und Ordner in einem Verzeichnis sollen aufgelistet und das Ergebnis an die Datei "liste.txt" angehängt werden.

Kommando:
Code:
ls 1>> liste.txt
Beschreibung:
Der Kanal 1 (Standard Output bzw. stdout) des Programms ls wird an die Datei liste.txt angehängt. Die Datei wird dementsprechend nicht überschrieben.


Beispiel 3 - Umleiten von stderr in eine Datei (anhängen)

Die Dateien und Ordner in einem nicht existierenden Verzeichnis sollen aufgelistet und die Fehlermeldung an den Error-Log "error.log" angehängt werden.

Kommando:
Code:
ls abcd 2>> error.log
Beschreibung:
Das Verzeichnis "abcd" existiert nicht und der Fehler wird über Fehlerkanal 2 (Standard Error bzw. stderr) des Programms ls an die Datei error.log angehängt. Die Datei wird wie auch in den vorherigen Beispielen nicht überschrieben.

Exclamation Tipp: Lässt man die 1 bei der Ausgabeumlenkung (>) weg, so benutzt die Bash automatisch Kanal 1 (Output).


Beispiel 4 - Umleiten von mehreren Kanälen

Die Dateien und Ordner in einem dem Verzeichnis abcd werden aufgelistet und in die Datei liste.txt gespeichert. Existiert die der Ordner abcd nicht, wird der Fehler in der Datei error.log vermerkt.

Kommando:
Code:
ls abcd > liste.txt 2> error.log
Beschreibung:
Fall 1: Das Verzeichnis "abcd" existiert und die Dateiliste wird in die Datei liste.txt geleitet.
Fall 2: Das Verzeichnis "abcd" existiert nicht und der Fehler wird in die Datei error.log geleitet.

Exclamation Tipp: Die Reihenfolge des Befehls ist von Bedeutung, existierende Dateien werden überschrieben.



Beispiel 5 - Kanäle ineinander leiten

Die Dateien und Ordner in einem dem Verzeichnis abcd werden aufgelistet und in die Datei full.log gespeichert. Fehler landen ebenfalls in der full.log

Kommando:
Code:
ls abcd >full.log 2>&1
Beschreibung:
Alles Ausgaben aus Kanal 1 und 2 werden in die gleiche Datei geleitet (full.log)

Exclamation Tipp: Die Reihenfolge des Befehls ist von Bedeutung, existierende Dateien werden überschrieben.


Beispiel 6 - eine einfache Eingabe-Umleitung:

Kommando:
Code:
mail -s "Anti-Hack ist toll" [email protected] < nachricht.txt
Beschreibung:
An [email protected] wird eine E-Mail mit dem Betreff "Anti-Hack ist toll" und dem Text aus der Datei nachricht.txt versandt.

[Bild: 7b6c9f3931-Bildschirmfoto_20120124_um_11.43.12.png]

Exclamation Tipp: Lässt man die 0 vor der Eingabeumlenkung (<) weg, so benutzt die Shell den Kanal 0 (stdin)!


Pipes

Bei der Verwendung von Pipes wird die Ausgabe eines Prozesses zur Eingabe eines anderen Prozesses:

Beispiel:

Kommando:
Code:
cat namen.txt | grep Florian

Beschreibung:
Gibt nur die Zeilen der Datei namen.txt aus,
welche das Wort bzw. den Namen "Florian" enthalten.

Weiterlesen:
Einführung in die Bash - Teil 3: Globbing

10.10.10 Le roi est mort! Vive le roi!
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste

Kontakt   Anti-Hack - Gemeinsam gegen DDoS, Spam und Hacker   Nach oben   Zum Inhalt   Archiv-Modus   RSS-Synchronisation   Impressum