Kullanımı {html,php,htm}sadece olarak çalışabilir ayracı genişleme standart olmayan bir (POSIX uyumlu değil) özelliğidir, bash, ksh, ve zsh.
Bir küme ayracı genişletmesinin tanınması için, komut satırında tırnaksız ( a'nın parçası) bir belirteç olması gerekir .
Bir bağ genişleme genişler birden argümanlar eli o kadar halinde, grepgörerek uçları birden --include=... hepsini ayrı ayrı geçmişti sadece sanki seçenekleri.
Küme ayracı genişletmesinin sonuçları , tuzakları olan globbing'e (dosya adı genişletme) tabidir :
Sonuçta ortaya çıkan her bağımsız değişken, .tk gibi tırnaksız genelleme meta karakterleri içeriyorsa eşleşen dosya adlarına genişletilebilir *.
Bu gibi belirteçlerde --include=*.html(örneğin, eşleşecek bir şey gibi kelimenin tam anlamıyla adlandırılmış bir dosyaya sahip olmanız gerekir --include=foo.html), ancak genel olarak akılda tutmaya değer.
nullglobKabuk seçeneği açılırsa ( shopt -s nullglob) ve globbing hiçbir şeyle eşleşmezse , argüman atılır .
Bu nedenle, tamamen sağlam bir çözüm için aşağıdakileri kullanın:
grep -R '--include=*.'{html,php,htm} pattern /some/path
'--include=*.'tek tırnaklı olması nedeniyle değişmez olarak değerlendirilir ; bu , bir globbing karakterinin yanlışlıkla yorumlanmasını önler .*
{html,php,htm}- zorunluluk - işlem görmeyen bağ genişleme [1]
, genişler 3 nedeniyle, bağımsız değişkenler, {...} doğrudan aşağıdaki '...'belirteç , içerir belirteç.
Bu nedenle, kabuk tarafından alıntı kaldırıldıktan sonra , aşağıdaki 3 değişmez argüman sonuçta iletilirgrep :
--include=*.html
--include=*.php
--include=*.htm
[1] Daha doğrusu, tırnaksız olması gereken yalnızca küme ayracı genişletmesinin sözdizimiyle ilgili kısımlarıdır; liste öğeleri yine de tek tek alıntılanabilir ve eğer küme ayracı genişletmeden sonra istenmeyen genellemeye neden olabilecek globbing meta karakterleri içeriyorlarsa; bu durumda gerekli olmamakla birlikte, yukarıdakiler şu şekilde yazılabilir:
'--include=*.'{'html','php','htm'}