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.

86 6 Dateien: Aufzucht und Pflege<br />

$ echo prog1/p*.c<br />

B<br />

gibt Ihnen unverbindlich und ohne weitere Konsequenzen jedweder Art die<br />

passenden Dateinamen aus.<br />

Wenn Sie wirklich ein Kommando auf alle Dateien im Verzeichnisbaum ab<br />

einem bestimmten Verzeichnis ausführen wollen: Auch dafür gibt es Mittel<br />

und Wege. Wir reden darüber in Abschnitt 6.4.4.<br />

Alle Dateien<br />

Das Suchmuster »*« beschreibt »alle Dateien im aktuellen Verzeichnis« – mit<br />

Ausnahme der versteckten Dateien, deren Name mit einem Punkt anfängt. Um<br />

möglicherweise unangenehme Überraschungen auszuschließen, werden die versteckten<br />

Dateien nämlich von Suchmustern konsequent ignoriert, solange Sie<br />

nicht explizit mit etwas wie ».*« veranlassen, dass sie einbezogen werden.<br />

A<br />

Sie kennen den Stern vielleicht von der Kommandooberfläche von Betriebssystemen<br />

wie DOS oder Windows 1 und sind von dort gewöhnt, ein Muster<br />

wie »*.*« anzugeben, um alle Dateien in einem Verzeichnis zu beschreiben.<br />

Unter <strong>Linux</strong> ist das nicht richtig – das Muster »*.*« passt auf »alle Dateien<br />

mit einem Punkt im Namen«, aber der Punkt ist ja nicht vorgeschrieben.<br />

Das <strong>Linux</strong>-Äquvalent ist, wie erwähnt, »*«.<br />

Fragezeichen<br />

Ein Fragezeichen steht als Suchmuster für genau ein beliebiges Zeichen (wieder<br />

ohne den Schrägstrich). Ein Muster wie<br />

p?.c<br />

passt also auf die Namen<br />

p1.c<br />

pa.c<br />

p-.c<br />

p..c<br />

(unter anderem). Beachten Sie, dass es aber ein Zeichen sein muss – die Option<br />

»gar nichts« besteht hier nicht.<br />

Sie sollten sich einen ganz wichtigen Umstand sehr gründlich merken: <strong>Die</strong> Expansion<br />

von Suchmustern ist eine Leistung der Shell! <strong>Die</strong> aufgerufenen Kommandos<br />

wissen normalerweise nichts über Suchmuster und interessieren sich auch<br />

nicht die Bohne dafür. Alles, was sie zu sehen bekommen, sind Listen von Pfadnamen,<br />

ohne dass kommuniziert wird, wo diese Pfadnamen herkommen – also<br />

ob sie direkt eingetippt wurden oder über Suchmuster entstanden sind.<br />

B<br />

B<br />

Es sagt übrigens niemand, dass die Ergebnisse der Suchmuster immer als<br />

Pfadnamen interpretiert werden. Wenn Sie zum Beispiel in einem Verzeichnis<br />

eine Datei namens »- l« haben, dann wird ein »ls *« in diesem Verzeichnis<br />

ein interessantes und vielleicht überraschen<strong>des</strong> Ergebnis liefern (siehe<br />

Übung 6.9).<br />

Was passiert, wenn die Shell keine Datei findet, die auf das Suchmuster<br />

passt? In diesem Fall bekommt das betreffende Kommando das Suchmuster<br />

direkt als solches übergeben; was es damit anfängt, ist seine eigene Sache.<br />

Typischerweise werden solche Suchmuster als Dateinamen interpretiert, die<br />

betreffende »Datei« wird aber nicht gefunden und es gibt eine Fehlermeldung.<br />

Es gibt aber auch Kommandos, die mit direkt übergebenen Suchmustern<br />

Vernünftiges anfangen können – hier ist die Herausforderung dann<br />

eher, dafür zu sorgen, dass die Shell, die das Kommando aufruft, sich nicht<br />

mit ihrer eigenen Expansion vordrängelt. (Stichwort: Anführungszeichen)<br />

1 Für CP/M sind Sie wahrscheinlich zu jung.<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!