มันอาจเป็นมูลค่าการกล่าวขวัญว่า unixy / การเปลือกหอย posixy เช่นเปลือกบอร์นทุบตี ksh, zsh ฯลฯ ทำการขยายตัวของตัวแทน (ของตัวละคร glob ชอบ*
, ?
, [range]
, [!range]
และการขยายอื่น ๆ เช่นการจัดฟันและ globs ขยาย) เพื่อรวบรวมรายชื่อของการขัดแย้งก่อนที่คำสั่ง ถูกประหารชีวิต ดังนั้นการขยายตัวนี้ทำโดยเชลล์ไม่ใช่คำสั่งที่อาจขัดแย้งกัน
เช่นเปลือกเป็นผู้รับผิดชอบสำหรับสิ่งที่*
, *.*
ขยาย
$ 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
นี่ไม่ใช่กรณีใน CMD (และในทำนองเดียวกันสำหรับโปรแกรมอรรถประโยชน์ powershell ) ในขณะที่มันส่งผ่านอักขระ glob คำต่อคำในการดำเนินการ - และดังนั้นการขยายตัวเป็นความรับผิดชอบของคำสั่ง / ยูทิลิตี้และไม่ใช่เปลือก ดังนั้นในที่สุดสิ่งที่*.*
หรือ*
วิธีการที่ถูกทิ้งไว้ในยูทิลิตี้ปล่อยให้มันเป็นไปตาม (หรือไม่) เพื่อการประชุม - ซึ่งเป็นสาเหตุที่ยูทิลิตี้ของ CMD เช่นdir *.*
จับคู่ยัง (เนื้อหาไม่ถูกต้อง
ฉันเชื่อว่ามันปลอดภัยที่จะสรุปวิธีนี้
- ภายใต้ CMD มันขึ้นอยู่กับยูทิลิตี้
- ภายใต้ PowerShell ยูทิลิตี้ที่ใช้ประโยชน์จากWildCardPattern Classจะให้ชุดย่อยที่สอดคล้องกันของพฤติกรรม posixy
*
และ*.*
ขณะนี้เทียบเท่าcmd
คำสั่งภายในและยูทิลิตีบรรทัดคำสั่งที่ทันสมัยยูทิลิตี้เก่าที่ใช้พารามิเตอร์มาส์กไฟล์อาจใช้ฟังก์ชั่นการจับคู่ไฟล์ที่เก่ากว่าและสำหรับมาสก์นั้นจะไม่เทียบเท่า