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 o
veya 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