ไม่มีข้อ จำกัด (นอกเหนือจากหน่วยความจำที่มี) ไปยังจำนวนไฟล์ที่อาจถูกขยายโดยbash
glob
อย่างไรก็ตามเมื่อไฟล์เหล่านั้นถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังคำสั่งที่ดำเนินการ (ตรงข้ามกับ shell builtin หรือฟังก์ชั่น) จากนั้นคุณอาจพบข้อ จำกัด ของการexecve()
เรียกระบบในบางระบบ ในระบบส่วนใหญ่การเรียกของระบบนั้นมีข้อ จำกัด เกี่ยวกับขนาดที่สะสมของข้อโต้แย้งและสภาพแวดล้อมที่ส่งผ่านไปและใน Linux ยังมีข้อ จำกัด แยกต่างหากเกี่ยวกับขนาดของข้อโต้แย้งเดียว
สำหรับรายละเอียดเพิ่มเติมดู:
เพื่อหลีกเลี่ยงข้อ จำกัด นั้นคุณสามารถใช้ (สมมติว่า GNU xargs
หรือเทียบเท่า):
printf '%s\0' foo* | xargs -r0 rm -f
ด้านบนเนื่องจากprintf
เป็นแบบในตัว (ในbash
และเชลล์แบบบอร์นส่วนใหญ่) เราจึงไม่ถึงexecve()
ขีด จำกัด และxargs
จะแยกรายการของข้อโต้แย้งออกเป็นrm
คำร้องได้มากเท่าที่ต้องการเพื่อหลีกเลี่ยงexecve()
ข้อ จำกัด
ด้วยzsh
:
autoload zargs
zargs foo* -- rm -f
ด้วยksh93
:
command -x rm -f foo*