Yalnızca alıntılanan dizeler globbing'e tabi değildir :
$ echo ".[].aliases[]"
.[].aliases[]
Ancak alıntı yapılmayan dizeler globbinge tabidir. Bir *veya bir ?veya (geçerli) [](köşeli ayraç ifadesi) içeren alıntılanmamış bir dize, kendisiyle eşleşen dosya listesi tarafından değiştirilir. Aynı şekilde *, eşleşen dizindeki tüm dosyalara ?dönüşecek ve yalnızca bir karakterin dosyalarıyla eşleşecek şekilde, (geçerli) []dosyaları parantez içindeki karakterlerle eşleştirecektir. Nokta geçerli bir karakterdir:
$ echo a[.]b
a[.]b
$ touch "a.b"
$ echo a[.]b
a.b
Biriyle eşleşebilmek ]için parantez içindeki ilk karakter olmalıdır:
$ touch "a]b"
$ ls a[]]b
a]b
Boş bir parantez ifadesi bir anlam ifade etmiyor (ve genişletilmiyor):
$ touch ab
$ ls a[]b
ls: cannot access 'a[]b': No such file or directory
Bu yüzden çalışır:
$ touch a]c abc afc azc a:c a?c aoc
$ ls a[]bfz:?]c
abc a:c a?c a]c afc azc
İçin [fikri benzer:
$ touch a[c
$ ls a[[]c
a[c
ancak köşeli ayraç ifadesinde herhangi bir konumda olabilir:
$ ls a[]bf[z:?]c
abc a:c a?c a[c a]c afc azc
$ ls a[]bfz:?[]c
abc a:c a?c a[c a]c afc azc
Gönderdiğiniz dize .[].foo[]bir noktayla ve ardından a ], a ., a f, a oveya a ile eşleşir [. Benzer:
$ echo a[].foo[]c
a[c a]c afc aoc
Ve aşağıdaki gibi eşleşecektir:
$ touch .] .f .o .[ .a .b .z
$ echo .[].foo[]
.. .[ .] .f .o
Dizin girdisinin .., varsayılan olarak her dizinde bulunduğundan oluşturulması gerekmediğini unutmayın. Ancak basit bir nokta ., açıkça (aslında bir nokta kullanarak) eşleştirilmesi gerektiğinden bir glob tarafından eşleştirilmez.
Ancak ..aliases, parantez ifadesi yalnızca bir karakterle eşleşeceğinden bu eşleşmez . Birkaç karakteri eşleştirmek için *(herhangi bir şey) kullanmanız gerekir :
$ touch ..a ..l ..i ..aliases ..alias ..ali
$ echo .[].aliases[]
.. .[ .] .a
$ echo .[].aliases[]*
.. .[ .] .a ..a ..ali ..alias ..aliases ..i ..l