Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
A Musterlösungen 233<br />
Es würde also nach wie vor erst alles gelesen, dann sortiert (oder eben nicht sortiert)<br />
und dann ausgegeben.<br />
<strong>Die</strong> andere Erklärung ist, dass zum Zeitpunkt <strong>des</strong> Lesens <strong>des</strong> inhalt-Eintrags<br />
wirklich noch nichts in die Datei geschrieben wurde; aus Effizienzgründen<br />
puffern die meisten Programme, wenn sie in Dateien schreiben sollen, ihre Ausgabe<br />
intern zwischen und führen tatsächliche Betriebssystemaufrufe zum Schreiben<br />
erst aus, wenn wirklich substanzielle Datenmengen (typischerweise 8192 Bytes)<br />
zusammengekommen sind. <strong>Die</strong>s läßt sich bei Programmen beobachten, die relativ<br />
langsam sehr viel Ausgabe erzeugen; hier wächst eine Ausgabedatei in Schritten<br />
von 8192 Bytes.<br />
8.2 Wenn ls auf den Bildschirm (oder allgemein ein »bildschirmartiges« Gerät)<br />
schreibt, dann formatiert es die Ausgabe anders als wenn es in eine »richtige« Datei<br />
schreibt: Es versucht, mehrere Dateinamen in einer Zeile anzuzeigen, wenn<br />
die Länge der Dateinamen es zuläßt, und kann je nach Einstellung die Dateinamen<br />
auch entsprechend ihres Typs färben. Bei der Ausgabeumlenkung in eine<br />
»richtige« Datei werden einfach nur die Namen ohne Formatierung zeilenweise<br />
ausgegeben.<br />
Auf den ersten Blick scheint das der Behauptung zu widersprechen, dass Programme<br />
gar nicht mitbekommen, dass ihre Ausgabe nicht auf den Bildschirm,<br />
sondern anderswohin geht. Im Normalfall ist die Behauptung richtig, aber wenn<br />
ein Programm sich ernsthaft dafür interessiert, ob sein Ausgabeziel ein bildschirmartiges<br />
Gerät (vulgo »Terminal«) ist, kann es das System danach fragen. Im Falle<br />
von ls ist die Überlegung dahinter einfach die, dass die Terminalausgabe normalerweise<br />
von menschlichen Benutzern angeschaut wird und man diesen möglichst<br />
viel Information bieten will. Umgeleitete Ausgabe dagegen wird von anderen Programmen<br />
verarbeitet und sollte einfach sein; daher die Beschränkung auf einen<br />
Dateinamen pro Zeile und der Verzicht auf Farben, die ja über Terminalsteuerzeichen<br />
angesprochen werden und die Ausgabe »verunreinigen« würden.<br />
8.3 <strong>Die</strong> Shell arrangiert die Ausgabeumlenkung, bevor das Kommando aufgerufen<br />
wird. Das Kommando sieht also nur noch eine leere Eingabedatei, was in<br />
der Regel nicht zum erwarteten Ergebnis führt.<br />
8.4 <strong>Die</strong> Datei wird von vorne gelesen und gleichzeitig hinten um alles Gelesene<br />
verlängert, sie wächst also, bis sie allen freien Plattenplatz einnimmt.<br />
8.5 Dazu müssen Sie die Standard-Ausgabe in die Standard-Fehlerausgabe umlenken:<br />
echo Fehler >&2<br />
8.6 Prinzipiell spricht nichts gegen<br />
… | tee bla | tee fasel | …<br />
Kürzer ist allerdings<br />
… | tee bla fasel | …<br />
Siehe hierzu auch die Dokumentation zu tee (Handbuch- oder Info-Seite).<br />
8.7 Leiten Sie die Dateiliste durch »cat -A«.<br />
8.8 Eine Möglichkeit wäre »head -n 13 | tail -n 1«.<br />
Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH