Muhtemelen unixy / vb Bourne kabuğu, bash, ksh, zsh gibi posixy kabukları (glob karakter gibi bir joker genişlemesini yapmak bahsetmemiz var *
, ?
, [range]
, [!range]
ve diğer açılımlar parantez ve genişletilmiş Neználkovo gibi) bağımsız değişkenlerin bir listesini derlemek için önce komuta Idam edildi. Dolayısıyla bu genişleme, bu argümanların olabileceği komut tarafından değil kabuk tarafından yapılır.
yani, ne için genişler *
, kabuk sorumludur*.*
$ ls
file.csv file.doc file.pdf file.txt file.xlsx zz-file-without-extension
$ (set -xv; foo *) # is actually expanded to the following
+ foo file.csv file.doc file.pdf file.txt file.xlsx zz-file-without-extension
$ (set -xv; foo *.*) # note this does not match `zz-file-without-extension`
+ foo file.csv file.doc file.pdf file.txt file.xlsx
Bu, CMD'de (ve powershell yardımcı programları için de benzer şekilde ), yürütülen karakterleri yürütülen komutun içinde geçen glob karakterlerini geçtiği için geçerli değildir - ve böylece genişleme, komutun / yardımcı programın sorumluluğundadır, kabuk değil. Nihayetinde, konvansiyonlara uyması (veya uymaması) için yardımcı programa ne *.*
ya da *
araç bırakıldı - bu nedenle CMD'nin yardımcı programları dir *.*
da uzantıları olmayan eşleştirmeler (tartışmasız olarak yine de saklı tutuyorlardı) gibi programları içeriyor .
Bu şekilde özetlemenin güvenli olduğuna inanıyorum.
- CMD altında yardımcı programa bağlıdır.
- PowerShell'de, WildCardPattern Class'tan yararlanan yardımcı programlar, tutarlı bir posixy davranış alt kümesi sağlayacaktır.
*
ve*.*
şimdi eşittir olsa da,cmd
dosya maskesi parametrelerini alan bazı eski yardımcı programlar daha eski dosya eşleme işlevlerini kullanabilir ve bunlar için maskeler eşdeğer olmaz.