09.04.2014 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!