# Geschweifte Klammern

Die Bash setzt aus in Klammern eingeschlossenen Zeichenketten (durch Kommas getrennt) alle möglichen Kombinationen zusammen:

`user@sonne> echo {a,b}{1,2,3} a1 a2 a3 b1 b2 b3 user@sonne> mkdir {bla,foo}{1,2}{a,b,c} user@sonne> ls bla1a bla1c bla2b foo1a foo1c foo2b bla1b bla2a bla2c foo1b foo2a foo2c`

Sind die Klammerausdrücke von konstanten Zeichenketten umgeben, werden diese Bestandteil der generierten Zeichenkette:

`user@sonne> touch part_{1,2,3}.txt user@sonne> ls part_1.txt part_2.txt part_3.txt`

Geschweifte Klammern dürfen verschachtelt werden:

`user@sonne> mkdir -p bsp/{ucb/{ex,edit},lib/{bla,foo}} user@sonne> ls bsp/ucb/ edit ex`

# Tilde

Alle einer Tilde `~` folgenden Buchstaben bis zum ersten Slash `/` oder Leerzeichen werden von der Bash als Benutzername interpretiert und - falls dieser existiert - durch den Pfad zum Heimatverzeichnis des Nutzers ersetzt:

`user@sonne> echo ~user/ /home/user`

Folgt der Tilde unmittelbar der Slash (oder ein Leerzeichen), so wird der Ausdruck als Heimatverzeichnis des aktuellen Nutzers interpretiert:

`user@sonne> echo ~/ /home/user`

Folgt einer Tilde ein `+`, so wird der Ausdruck durch den Wert der Variablen `PWD` (aktuelles Verzeichnis) ersetzt; folgt ein `-`, betrifft es die Variable `OLDPWD` (vorheriges Verzeichnis):

`user@sonne> cd /usr/src user@sonne> echo ~+ /usr/src user@sonne> echo ~- /home/usr`

Bei Variablenzuweisungen wird die Tildeerweiterung angewandt, falls die Tilde unmittelbar auf ein "=" folgt:

`user@sonne> MYPATH=~/bin user@sonne> echo $MYPATH /home/user/bin`