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 ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
88 6 Dateien: Aufzucht und Pflege<br />
6.3.3 Geschweifte Klammern<br />
Gerne in einem Atemzug mit Shell-Suchmustern erwähnt, auch wenn sie eigentlich<br />
eine nur entfernte Verwandte ist, wird die Expansion geschweifter Klammern<br />
in der Form<br />
{rot,gelb,blau}.txt<br />
– die Shell ersetzt dies durch<br />
rot.txt gelb.txt blau.txt<br />
kartesisches Produkt<br />
Allgemein gilt, dass ein Wort auf der Kommandozeile, das einige durch Kommas<br />
getrennte Textstücke innerhalb von geschweiften Klammern enthält, durch so viele<br />
Wörter ersetzt wird, wie Textstücke zwischen den Klammern stehen, wobei in<br />
jedem dieser Wörter der komplette Klammerausdruck durch eins der Textstücke<br />
ersetzt wird. <strong>Die</strong>ser Ersetzungsvorgang findet einzig und allein auf textueller Basis statt<br />
und ist völlig unabhängig von der Existenz oder Nichtexistenz irgendwelcher Dateien oder<br />
Verzeichnisse – dies im Gegensatz zu Suchmustern, die immer nur solche Namen<br />
produzieren, die tatsächlich als Pfadnamen im System vorkommen.<br />
Sie können auch mehr als einen Klammerausdruck in einem Wort haben, dann<br />
erhalten Sie als Ergebnis das kartesische Produkt, einfacher gesagt alle möglichen<br />
Kombinationen:<br />
{a,b,c}{1,2,3}.dat<br />
ergibt<br />
a1.dat a2.dat a3.dat b1.dat b2.dat b3.dat c1.dat c2.dat c3.dat<br />
Nützlich ist das zum Beispiel, um systematisch neue Verzeichnisse anzulegen;<br />
die normalen Suchmuster helfen da nicht, da sie ja nur bereits Existieren<strong>des</strong> finden<br />
können:<br />
$ mkdir -p umsatz/200{8,9}/q{1,2,3,4}<br />
Übungen<br />
C 6.7 [!1] Im aktuellen Verzeichnis stehen die Dateien<br />
prog.c prog1.c prog2.c progabc.c prog<br />
p.txt p1.txt p21.txt p22.txt p22.dat<br />
C<br />
C<br />
C<br />
Auf welche dieser Dateinamen passen die Suchmuster (a) prog*.c, (b) prog?.c,<br />
(c) p?*.txt, (d) p[12]*, (e) p*, (f) *.*?<br />
6.8 [!2] Was ist der Unterschied zwischen »ls« und »ls *«? (Tipp: Probieren<br />
Sie bei<strong>des</strong> in einem Verzeichnis aus, das Unterverzeichnisse enthält.)<br />
6.9 [2] Erklären Sie, warum das folgende Kommando zur angezeigten Ausgabe<br />
führt:<br />
$ ls<br />
-l datei1 datei2 datei3<br />
$ ls *<br />
-rw-r--r-- 1 hugo users 0 Dec 19 11:24 datei1<br />
-rw-r--r-- 1 hugo users 0 Dec 19 11:24 datei2<br />
-rw-r--r-- 1 hugo users 0 Dec 19 11:24 datei3<br />
6.10 [2] Warum ist es sinnvoll, dass »*« nicht auf Dateinamen mit Punkt am<br />
Anfang passt?<br />
Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH