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