Platzhalter in der Shell

Sie benutzen vermutlich längst das Globbing (Ersetzen durch Platzhalter) von Zeichen ohne es zu wissen. Wenn Sie eine Datei unter Windows® angeben oder eine Datei suchen, benutzen Sie meist * als Platzhalter für eine beliebige Zeichenfolge. Beispielsweise steht *.txt für alle Dateien, deren Name mit .txt endet. Auch wir haben es in diesem Kapitel bereits oft eingesetzt. Aber ausser * gibt es noch Einiges mehr im Bereich Globbing.

Wenn Sie einen Befehl wie etwa ls *.txt eingeben und dann auf Enter drücken, so wird die Suche nach Dateien, die dem Muster *.txt entsprechen, nicht vom Befehl ls sondern von der shell selbst durchgeführt. Zum Verständnis folgt eine kurze Erklärung des Vorganges, wie eine Befehlszeile von der shell ausgewertet und abgearbeitet wird. Bei der Eingabe von:

$ ls *.txt
      readme.txt  recipes.txt

wird die Befehlszeile erstmal in Wörter aufgeteilt (in diesem Beispiel in ls und *.txt). Wenn die Shell ein * in einem Wort findet wird das ganze Wort als Globbing-Muster angesehen und durch die Namen aller passenden Dateien ersetzt. Also wurde der Befehl, kurz bevor er von der Shell ausgeführt wurde, zum ausführlichen Befehl ls readme.txt recipe.txt, was der Ausgabe entspricht. Auch weitere Zeichen veranlassen die Shell dazu, in gleicher Weise zu reagieren:

Einige Beispiele:



[5] Vorsicht! Das trifft auf die meisten Sprachen zu, muss aber nicht bei Ihrer Sprache zutreffen. Das hängt von der Zeichenordnung ab. In manchen Spracheinstellungen trifft [a-z] auf a, A, b, B, (...), und z zu. Und dabei reden wir noch nicht einmal von Umlauten ...