Die Idee hinter Substituion ist, daß durch Metazeichen gebildete Ausdrücke in Kommandos vor ihrer Ausführung durch auf die Vorgabe (Bedeutung des Metazeichens) passende Namen ersetzt werden. Beim Aufruf von ls *.html wird das *.html durch alle mit .html endenen Dateien ersetzt. Das Metazeichen * steht also für eine beliebige Zeichenkette (auch die leere). Eine Übersicht der Metazeichen und ihre Bedeutung findet man in Tabelle [*]
Metazeichen und ihre Bedeutung | |
* | der Stern steht für beliebig viele Zeichen (auch kein Zeichen) ACHTUNG: liefert keine .-Dateien |
? | das Fragezeichen steht für genau ein beliebiges Zeichen |
[abc] | die Klammer wird durch ein in der Klammer angegebenes Zeichen ersetzt |
[!abc] | die Klammer mit Ausrufezeichen wird ersetzt durch ein beliebiges Zeichen, das nicht in der Klammer angegeben ist |
der Backslash hebt den Ersetzungsmechnismus für das nachfolgende Sonderzeichen auf [+] | |
. | bezeichnet das aktuelle Verzeichnis |
.. | bezeichnet das übergeordnete Verzeichnis |
~ | bezeichnet das home Verzeichnis |
Möchte man überprüfen, wie die bash arbeitet, so kann man das Kommando set -x ausführen. Die bash zeigt dann vor Ausführung jedes weiteren Befehls an, wie die Kommandozeile ausgewertet wurde, darin sind auch alle expandierten Dateinamen vorhanden.