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