Prozesssubstitution Der Kommandozeileninterpreter Bash Shellvariablen Inhalt Index


Und noch einmal Jokerzeichen...

In der Einführung wurden Wildcards schon vorgestellt, allerdings ohne die Reihenfolge ihrer Auswertung zu erwähnen. In folgender Tabelle sind daher diejenigen Jokerzeichen zusammengefasst, die im Sinne einer Pfadnamensexpansion betrachtet werden:

? Genau ein beliebiges Zeichen
* Beliebig viele (auch 0) beliebige Zeichen
[def] Eines der Zeichen
[^def] Keines der angegebenen Zeichen
[!def] Wie oben
[a-d] Alle Zeichen aus dem Bereich

Beispiele

user@sonne> ls *.tex
Buch.tex buch.tex BUCH.tex

user@sonne> ls ?uch.tex
Buch.tex buch.tex

user@sonne> ls -d /*
bin   cdrom  etc     home  lost+found  opt   root  tmp  var
boot  dev    floppy  lib   mnt         proc  sbin  usr  

user@sonne> ls -d /*[a-c]*
/bin  /boot  /cdrom  /etc  /lib  /proc  /sbin  /var

user@sonne> ls -d /*[^d-z]*
/bin  /boot  /cdrom  /etc  /lib  /lost+found  /proc  /sbin  /var  

Erweiterter Modus

Im erweiterten Modus versteht die Bash noch eine Fülle weiterer Suchmuster. Dazu muss die eingebaute Shelloption extglob eingeschaltet werden:

user@sonne> shopt extglob
extglob         off

user@sonne> shopt -s extglob
user@sonne> shopt extglob
extglob         on

                                                                                                                                                                                                                      
Muster Steht für...
?(a|b|c)Keine oder eine der eingeschlossenen Zeichenketten
*(a|b|c)Keine oder mehrere der eingeschlossenen Zeichenketten
+(a|b|c)Eine oder mehrere der eingeschlossenen Zeichenketten
@(a|b|c)Genau eine der eingeschlossenen Zeichenketten
!(a|b|c)Alle außer den eingeschlossenen Zeichenketten
  

Anstelle der Zeichenketten dürfen wiederum Muster verwendet werden:

# alle Namen, die mit "bi", "*+" oder "us" beginnen
user@sonne> ls -d /+(bi|*+|us)*
/bin  /lost+found  /usr  

# alle Namen, die nicht mit "b*" beginnen und deren zweiter Buchstabe kein "o" ist
user@sonne> ls -d /!(b*|?o*)
/cdrom  /dev  /etc  /floppy  /lib  /mnt  /opt  /proc  /sbin  /tmp  /usr  /var


Prozesssubstitution Der Kommandozeileninterpreter Bash Shellvariablen Inhalt Index