Mit "Ausdruck" ist ein String gemeint, der eines der Zeichen "*?[]{}~" enthält (siehe auch csh-Manual, Kapitel Filename Completion). Die damit gebildeten Ausdrücke sind stark vereinfachte regular expressions. Man beachte, daß diese eine andere Syntax haben als die, die das Kommando grep erwartet.
Das * steht dabei für 0 oder mehr beliebige Zeichen, das ? für genau eines. Man nennt diese beiden Zeichen auch Wildcards. Die Shell sucht dann im aktuellen Verzeichnis nach Dateinamen, auf die die Beschreibung paßt, d.h. nach solchen, für die es beliebige Zeichenketten gibt, die man für die Zeichen * bzw. ? in den Ausdruck einsetzen kann, so daß er gleich dem eines Dateinamens wird. Mit "[ ]" kann man die Menge der Zeichen, aus denen die Ersetzung gebildet wird, beschränken. Beispiel:
echo a*b echo a?b echo a[b-c] echo */* | tr ' ' '\012'
Beispiel 1 gibt die Namen aller Dateien im aktuellen Directory aus, die mit "a" anfangen und mit "b" enden. Beispiel 2 gibt dagegen nur die der Namen aus, die genau 3 Zeichen lang sind. Beispiel 3 gibt alle Dateinamen aus, die mit "a" beginnen und von einem der Zeichen b-c gefolgt werden. Das lezte Beispiel zeigt, wie man echo benuzten kann, um Teile des Verzeichnisbaums zu listen.
Ausnahme: Der * am Anfang eines Dateinamens wird nicht durch Strings beginnend mit "." (Punkt) ersetzt, d.h. man findet zum Beispiel die Datei .rhosts nicht (Näheres siehe auch im Kapitel Verzeichnisse listen). Dies ist dazu gedacht, selten benötigte Dateien zu "verstecken". Man nennt sie Punktfiles.
Die Zeichen ~ und {} führen im Gegensatz zum vorigen nicht zu einem Pattern matching auf vorhandene Dateinamen. Mit der Tilde kann man Pfade zum Homedirectory verschiedener Benutzer abkürzen; näheres siehe Kapitel Projekthomes. Enthält ein Wort geschweifte Klammern, so wird sooft durch Leerzeichen getrennt geschrieben, wie Elemente in der in den Klammern enthaltenen Menge sind. In jedem der ausgegebenen Wörter wird ein anderes Element der Menge für die Klammern eingesetzt.
Ausdruck wird ersetzt durch
~ $HOME
~student Home aus Passwort-Eintrag (ypmatch student passwd)
t{e,d,f}st test tdst tfst
Möchte man eines der genannten Meta-Zeichen an der Shell vorbei einem
Kommando als Parameter übergeben, so schließt man das Wort in
Doppel-Hochkommas ein oder schreibt einen Backslash "\"
davor. Siehe auch im Kapitel
Quoting. Aber Vorsicht: In der csh sind bei diesem
Mechanismus viele Bugs eingebaut, z.B. Fluchten des Doppelhochkommas in
Strings funktioniert fast nie. Beispiel:
egrep "pattern.*" text