Home · Kontakt · Impressum
contents index previous up next
Next: 5.4.2 Pipelines Up: 5.4 Umleitungen der Eingaben Previous: 5.4 Umleitungen der Eingaben

Unterabschnitte



5.4.1 Umleitung der Eingabe und Ausgabe

Standardmäßig kommen die Eingaben von der Tastatur und die Ausgabe des Programms und seiner Fehlermeldungen landen auf dem Terminal und damit auf dem Bildschirm.


5.4.1.1 Ausgabe

5.4.1.1.1 Ausgabe in eine Datei

Mit dem Zeichen > oder 1> wird die Ausgabe des Programm in die angegebene Datei umgelenkt. Ob das Eingabeziel vor dem Befehl oder nach dem Befehl steht ist relativ egal. Als Konvention hat sich der Platz hinter dem Befehl eingebürgert.

ole@enterprise:~/test> cat *.txt > alle.txt
ole@enterprise:~/test> > nochmal.txt cat *.txt

Dabei wird jedesmal eine neue Datei erstellt und der Inhalt der alten Datei gelöscht.

5.4.1.1.2 Anhängen an eine Datei

Soll die Ausgabe nicht die alte Datei löschen, dann müssen die Daten an die Datei angehängt werden. In diesem Fall verwendet man >>.
ole@enterprise:~/test> date >> blubb.log
ole@enterprise:~/test> >> blubb.log echo $USER $SHELL $0
In diesem Fall wird die blubb.log nicht durch den zweiten Befehl überschrieben sondern ergänzt.

5.4.1.1.3 Ausgabe von Fehlermeldungen

Obwohl die Fehlermeldungen auch an das Terminal gehen, werden sie durch ihren eigenen Datenkanal transportiert. Dies muß natürlich auch im Umleitungszeichen ausgedrückt werden. Mit 2> wird die Standardfehlerausgabe umgeleitet. Oft stören die Fehlermeldungen, wenn sie z. B. nur melden, daß keine Zugriffsrechte auf ein Verzeichnis bestehen.

ole@enterprise:~/test> ls -Rl 2> /dev/null
ole@enterprise:~/test> 2> fehler.log ls -Rl

Die Gerätedatei ist praktisch das Nichts von Linux. Alle Daten, die in diese Datei geleitet werden, gehen verloren und werden nie wieder gesehen. Also der ideale Ort für unsinnige Warnungen, überflüssige Fehlermeldungen oder einfach zum Testen. Schade, daß ich die Ausgabe mancher Menschen nicht in ein solches Gerät umleiten kann.

5.4.1.1.4 Beide Ausgaben umleiten

Um beide Ausgaben (Standardausgabe und Standardfehlerausgabe) gemeinsam in eine Datei zu leiten, gibt es mehrere Möglichkeiten. Schauen Sie sich einfach mal die Beispiele für den Befehl grep (7.7.1), mit dem Dateien durchsucht werden können.

ole@enterprise:~/test> grep -r enterprise /etc/ &> blubb.txt
ole@enterprise:~/test> grep -r enterprise /etc/ >& blubb.txt
ole@enterprise:~/test> grep -r enterprise /etc/ > blubb.txt 2>&1
ole@enterprise:~/test> grep -r enterprise /etc/ 2> blubb.txt 1>&2

Bei den letzten Kommandos kommt es auf die Reihenfolge an. Denn die folgenden Kombinationen führen nicht zum gewünschten Erfolg.

ole@enterprise:~/test> grep -r enterprise /etc/ 2>&1 > blubb.txt
ole@enterprise:~/test> grep -r enterprise /etc/ 1>&2 2> blubb.txt


5.4.1.2 Eingabe

5.4.1.2.1 Daten aus einer Datei

Heute unterstützen die meisten Programme direkt das Lesen aus einer Datei. Allerdings ist dies nicht zwingend notwendig, da die Aufgabe des Lesens einer Datei auch die Bash übernehmen kann. Mit dem Zeichen < liest das Programm nicht von der Standardeingabe sondern holt seine Daten aus der angegeben Datei. Es ist dabei völlig egal, ob die als Eingabe dienende Datei vor oder hinter dem befehl definiert wird.

ole@enterprise:~/test> cat < input.txt
In a world without walls and fences,
who needs windows and gates?
ole@enterprise:~/test> < input.txt cat
In a world without walls and fences,
who needs windows and gates?

5.4.1.2.2 Simulation einer Datei zur Eingabe

Sie können auch den Einsatz einer Datei mit der Tastatur simulieren. Mit den Zeichen << und einem Endemarkierung können Sie auf der Tastatur so viele Zeilen eingeben, wie sie wollen. Abgeschlossen wird der Vorgang, wenn Sie in eine Zeile nur die Endemarkierung hineinschreiben.

ole@enterprise:~/test> sort <<ENDE
> Leif Neid
> Thore Wart
> Axel Schweiß
> Erk Lasse
> Walter Meingott
> ENDE
Axel Schweiß
Erk Lasse
Leif Neid
Thore Wart
Walter Meingott

Die Ein- und Ausgabeumleitungen können natürlich wild miteinander kombiniert werden. Das kann zu manchmal merkwürdigen Befehlen führen, die aber völlig in Ordnung sind.


contents index previous up next
Next: 5.4.2 Pipelines Up: 5.4 Umleitungen der Eingaben Previous: 5.4 Umleitungen der Eingaben
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang