Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 3

Die automatische Erweiterung von Dateinamen

Eine andere Möglichkeit der Zeitersparnis liegt in der Benutzung von speziellen Zeichen, um Dateinamen abzukürzen (Wildcards). Sie können mit Hilfe dieser Zeichen mehrere Dateien gleichzeitig ansprechen.

MS-DOS bietet ein paar einfache Möglichkeiten dieser Art: Sie können das Fragezeichen als Platzhalter für ein »beliebiges Zeichen« einsetzen, und ein Stern ersetzt eine »Zeichenkette«. UNIX kennt solche Wildcards ebenfalls, ist aber in der Anwendung wesentlich flexibler.

Nehmen wir an, in einem Verzeichnis stehen folgende Dateien mit C-Quellcode:

$ ls 
inv1jig.c   inv2jig.c   inv3jig.c   invinitjig.c   invpar.c

Um nur die Dateien aufzulisten, deren Name Ziffern enthält, könnten Sie eingeben:

$ ls inv?jig.c
inv1jig.c   inv2jig.c   inv3jig.c

Die Shell sucht nach Dateinamen, in denen ein Zeichen das Fragezeichen ersetzt. Deshalb werden inv1jig.c , inv2jig.c und inv3jig.c aufgelistet, jedoch nicht invinitjig.c, weil dieser Name zu viele Zeichen enthält.

Falls Sie die zweite Datei nicht gebrauchen können, benutzen Sie eckige Klammern, um nur die interessanten Dateien zu aufzulisten:

$ ls inv[13]jig.c
inv1jig.c   inv3jig.c

Falls eines der Zeichen innerhalb der eckigen Klammern auf einen Dateinamen paßt, wird dieser angezeigt. Sie können auch einen Zeichenbereich definieren:

$ ls inv[1-3]jig.c
inv1jig.c   inv2jig.c   inv3jig.c

Diesmal werden wieder alle drei Dateien aufgelistet. Der Bindestrich bedeutet: »Suche nach Treffern für alle Zeichen zwischen 1 und 3 einschließlich«. Sie können beliebige Ziffern mit der Angabe 0-9 ansprechen und alle Buchstaben mit der Angabe [a-zA-Z]. In diesem Fall müssen Sie zwei Bereiche definieren, weil die Shell die Groß- und Kleinschreibung berücksichtigt. Die Sortierreihenfolge, die bei diesen Definitionen benutzt wird, ist übrigens der ASCII-Zeichensatz.

Nehmen wir an, daß Sie dieses Mal auch die Init-Datei auflisten wollen. Dazu können Sie den Stern einsetzen, weil er eine beliebige Anzahl von Zeichen zwischen dem inv und dem jig ersetzt:

$ ls inv*jig.c
inv1jig.c   inv2jig.c   inv3jig.c   invinitjig.c

Der Stern steht tatsächlich für »kein oder mehrere Zeichen«, so daß auch eine Datei mit dem Namen invjig.c gelistet worden wäre.

Anders als MS-DOS erlauben die UNIX-Shells eine beliebige Kombination aus normalen Zeichen und Zeichen mit besonderer Bedeutung. Sie können z.B. alle Source- ( .c ) und Objektdateien ( .o ) auflisten, deren Name eine Ziffer enthält. Der folgende Suchstring kombiniert alle Möglichkeiten der Namenserweiterung, die wir hier vorgestellt haben!

$ ls *[0-9]*.[co]

Die Erweiterung von Dateinamen kann in Shell-Skripts sehr nützlich sein, wenn Sie nicht genau wissen, mit wie vielen Dateien Sie es zu tun haben. Vielleicht haben Sie z.B. eine Reihe von Logdateien namens log001 , log002 usw. zu bearbeiten. Egal wie viele dieser Dateien es gibt -- mit dem Suchstring log* erfassen Sie sie alle.

Eine Warnung zum Abschluß: Die Erweiterung von Dateinamen ist nicht dasselbe wie reguläre Ausdrücke (regular expressions), die von vielen Utilities benutzt werden, um Gruppen von Dateien zu bezeichnen. Die Besprechung von regulären Ausdrücken würde den Rahmen dieses Buches sprengen, aber jedes Buch über UNIX-Utilities geht auch auf dieses Thema ein.


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt