อ่าน 7 นาที
glob (การเขียนโปรแกรม)
C POSIX library/Pattern matching/Unix programming tools/ใช้วันที่ dmy ตั้งแต่เดือนกรกฎาคม 2019/ลิงก์ย้อนกลับเทมเพลต Webarchive
glob() ( / ɡ l ɒ b / ) เป็น ฟังก์ชัน POSIX Cสำหรับ การใช้ globbingซึ่งเป็นการใช้การจับคู่รูปแบบกับชื่อในไดเร็กทอรีของระบบไฟล์แบบ ดั้งเดิม...
glob (การเขียนโปรแกรม)

globเจ้าของคือdmrซึ่งเป็นชื่อย่อของDennis MacAlistair Ritchieglob() ( / ɡ l ɒ b / ) เป็น ฟังก์ชัน POSIX Cสำหรับ การใช้ globbingซึ่งเป็นการใช้การจับคู่รูปแบบกับชื่อในไดเร็กทอรีของระบบไฟล์แบบ ดั้งเดิม โดยที่รูปแบบชื่อจะถูกขยายออกเป็นรายการชื่อที่ตรงกับรูปแบบนั้น แม้ว่า ปัจจุบัน globbingอาจหมายถึงglob()การจับคู่รูปแบบสไตล์ของสตริงใดๆ ก็ได้ ไม่ใช่แค่การขยายออกเป็นรายการชื่อในระบบไฟล์ แต่ความหมายดั้งเดิมของคำนี้ก็ยังคงแพร่หลายอยู่
ฟังก์ชันglob()และgmatch()ฟังก์ชันพื้นฐานนี้มีต้นกำเนิดที่Bell Labsในช่วงต้นทศวรรษ 1970 ควบคู่ไปกับระบบปฏิบัติการ UNIX ของ AT&Tเอง และมีอิทธิพลอย่างมากต่อไวยากรณ์ของยูทิลิตี้บรรทัดคำสั่งของ UNIX และด้วยเหตุนี้จึงมีอิทธิพลต่อการนำไปใช้งานใหม่ในปัจจุบันด้วย
ในรูปแบบดั้งเดิมนั้นglob()พัฒนาgmatch()มาจากโค้ดที่ใช้ในยูทิลิตี้ภายในของBell Labsglob ซึ่งพัฒนาควบคู่ไปกับ Unix รุ่นแรกในช่วงต้นทศวรรษ 1970 ยูทิลิตี้เหล่านั้นรวมถึงเครื่องมือบรรทัดคำสั่งสองตัวที่เรียกว่า `globbing` และ `globbing` findซึ่งแต่ละตัวสามารถใช้ส่งรายการชื่อไฟล์ที่ตรงกันไปยังเครื่องมือบรรทัดคำสั่งอื่นๆ ได้ และทั้งสองตัวใช้โค้ดแบ็กเอนด์ร่วมกัน ซึ่งต่อมาได้ถูกกำหนดรูปแบบเป็น `globbing` glob()และgmatch()`globbing` การค้นหาชื่อไฟล์โดยใช้รูปแบบ globbing ในระดับคำสั่งเชลล์กลายเป็นเรื่องปกติหลังจากมีการรวมฟังก์ชันการค้นหาชื่อไฟล์โดยใช้รูปแบบ globbing เข้ากับเชลล์Unix รุ่นที่ 7ในปี 1978 ตัวเลือก `-f` ของเชลล์ Unix สำหรับปิดใช้งานการค้นหาชื่อไฟล์โดยใช้รูปแบบ globbing — เช่น กลับไปใช้โหมด "ไฟล์" ตามตัวอักษร — ปรากฏในเวอร์ชันเดียวกัน
ตัวระบุปริมาณรูปแบบ glob ที่ได้รับการกำหนดมาตรฐานโดยPOSIX.2 (IEEE Std 1003.2) แบ่งออกเป็นสองกลุ่ม และสามารถนำไปใช้กับลำดับอักขระใดๆ ("สตริง") ได้ ไม่ใช่แค่กับรายการในไดเร็กทอรีเท่านั้น
- "เมตาแคแรคเตอร์" (หรือเรียกอีกอย่างว่า "ไวด์การ์ด"):
?(ไม่อยู่ในวงเล็บ) ตรงกับอักขระใดๆ เพียงครั้งเดียวเท่านั้น*(ไม่อยู่ในวงเล็บ) ตรงกับสตริงที่มีอักขระศูนย์ตัวขึ้นไป
- "ช่วง/ชุด":
[...]โดยที่อักขระตัวแรกภายในวงเล็บไม่ใช่ '!' จะตรงกับอักขระใดๆ ก็ได้ในบรรดาอักขระที่ระบุไว้ในวงเล็บ แต่ถ้าอักขระตัวแรกภายในวงเล็บเป็น '!' จะ[!...]ตรงกับอักขระใดๆ ก็ได้ที่ไม่ อยู่ ในกลุ่มอักขระที่ระบุไว้ในวงเล็บ
- อักขระในวงเล็บอาจเป็นรายการ (
[abc]) หรือช่วง ([a-c]) หรือระบุคลาสอักขระ (เช่น[[:space:]]โดยที่วงเล็บด้านในเป็นส่วนหนึ่งของชื่อคลาส) POSIX ไม่ได้กำหนดให้[a-c0-3]รองรับช่วงหลายช่วง ( ) ซึ่งมีที่มาจากนิพจน์ปกติ แต่ เดิม
- อักขระในวงเล็บอาจเป็นรายการ (
เมื่อการนำระบบ UNIX ของBell Labs มาเขียนใหม่ แพร่หลายมากขึ้น การนำไลบรารี libc และเชลล์ของ Bell Labs มาเขียนใหม่ก็แพร่หลายตามไปด้วย รวมถึงการใช้ globbing ด้วยปัจจุบันการglob()ใช้globbing ได้รับการกำหนดมาตรฐานโดย ข้อกำหนด POSIX.2และเป็นส่วนสำคัญของระบบนิเวศ libc และเชลล์ที่คล้าย Unix ทุกระบบ รวมถึงเชลล์ Korn ที่เข้ากันได้กับ AT&T Bourne shell (ksh) , Z shell (zsh) , Almquist shell (ash)และเชลล์ที่พัฒนาต่อยอดและนำมาเขียนใหม่ เช่นbusybox , toybox , GNU bashและDebian dash glob()
ต้นทาง
คำสั่ง glob ซึ่งย่อมาจากglobal มีต้นกำเนิดมาจาก Unixเวอร์ชันแรกสุดของ Bell Labs [ 1 ]ตัวแปลคำสั่งของ Unix เวอร์ชันแรกๆ (รุ่นที่ 1 ถึง 6, 1969–1975) อาศัยโปรแกรมแยกต่างหากในการขยายอักขระไวด์การ์ดในอาร์กิวเมนต์ที่ไม่มีเครื่องหมายคำพูดของคำสั่ง: /etc/globโปรแกรมดังกล่าวจะทำการขยายและส่งรายการเส้นทางไฟล์ที่ขยายแล้วไปยังคำสั่งเพื่อดำเนินการ
Glob เดิมทีเขียนด้วยภาษาโปรแกรม Bนับเป็นซอฟต์แวร์ Unix หลักชิ้นแรกที่พัฒนาด้วยภาษาโปรแกรมระดับสูง[ 2 ]ต่อมา ฟังก์ชันนี้ถูกจัดให้เป็นฟังก์ชันไลบรารี C ซึ่งglob()ใช้โดยโปรแกรมต่างๆ เช่นเชลล์โดยปกติแล้วจะถูกกำหนดโดยอิงจากฟังก์ชันชื่อfnmatch()ซึ่งจะทดสอบว่าสตริงตรงกับรูปแบบที่กำหนดหรือไม่ โปรแกรมที่ใช้ฟังก์ชันนี้สามารถวนซ้ำผ่านสตริงต่างๆ (โดยปกติคือชื่อไฟล์) เพื่อตรวจสอบว่าสตริงใดตรงกัน ฟังก์ชันทั้งสองเป็นส่วนหนึ่งของPOSIX : ฟังก์ชันที่กำหนดไว้ใน POSIX.1 ตั้งแต่ปี 2001 และไวยากรณ์ที่กำหนดไว้ใน POSIX.2 [ 3 ] [ 4 ]แนวคิดในการกำหนดฟังก์ชันการจับคู่แยกต่างหากเริ่มต้นด้วยwildmat (wildcard match) ซึ่งเป็นไลบรารีง่ายๆ สำหรับจับคู่สตริงกับ glob ของ Bourne Shell
ตามธรรมเนียมแล้ว รูปแบบ glob จะไม่ตรงกับไฟล์ที่ซ่อนอยู่ซึ่งอยู่ในรูปแบบไฟล์จุด ของ Unix หาก ต้องการให้ตรงกับไฟล์เหล่านั้น รูปแบบจะต้องเริ่มต้นด้วย.`.` อย่างชัดเจน ตัวอย่างเช่น `.` *จะตรงกับไฟล์ที่มองเห็นได้ทั้งหมด ในขณะที่.*`.` จะตรงกับไฟล์ที่ซ่อนอยู่ทั้งหมด
ไวยากรณ์
อักขระตัวแทนที่ใช้บ่อยที่สุดคือ*, ?, และ[…].
| ไวลด์การ์ด | คำอธิบาย | ตัวอย่าง | การแข่งขัน | ไม่ตรงกัน |
|---|---|---|---|---|
* | ตรงกับอักขระใดๆ ก็ได้จำนวนเท่าใดก็ได้ รวมถึงไม่มีเลยด้วยซ้ำ | Law* | Law, Laws, หรือLawyer | GrokLaw, La, หรือaw |
*Law* | Law, GrokLaw, หรือLawyer. | La, หรือaw | ||
? | ตรงกับอักขระตัวเดียวใดๆ | ?at | Cat, cat, Batหรือbat | at |
[abc] | ตรงกับอักขระหนึ่งตัวที่ระบุในวงเล็บ | [CB]at | CatหรือBat | cat, batหรือCBat |
[a-z] | ตรงกับอักขระหนึ่งตัวจากช่วง (ขึ้นอยู่กับภาษาท้องถิ่น) ที่ระบุในวงเล็บ | Letter[0-9] | Letter0, Letter1, Letter2จนถึงLetter9 | Letters, LetterหรือLetter10 |
โดยปกติแล้ว อักขระคั่นเส้นทาง ( /บน Linux/Unix, MacOS ฯลฯ หรือ\บน Windows) จะไม่ตรงกันเลย เชลล์บางตัว เช่นเชลล์ Unixมีฟังก์ชันที่อนุญาตให้ผู้ใช้หลีกเลี่ยงสิ่งนี้ได้[ 5 ]
เหมือนยูนิก
ในระบบที่คล้าย Unix*จะ?ถูกกำหนดไว้ข้างต้น ในขณะที่[…]มีความหมายเพิ่มเติมอีกสองประการ: [ 6 ] [ 7 ]
| ไวลด์การ์ด | คำอธิบาย | ตัวอย่าง | การแข่งขัน | ไม่ตรงกัน |
|---|---|---|---|---|
[!abc] | ตรงกับอักขระหนึ่งตัวที่ไม่ได้ระบุไว้ในวงเล็บ | [!C]at | Bat, bat, หรือcat | Cat |
[!a-z] | ตรงกับอักขระหนึ่งตัวที่ไม่อยู่ในช่วงที่กำหนดในวงเล็บ | Letter[!3-5] | Letter1, Letter2, Letter6จนถึงLetter9และLetterxอื่นๆ | Letter3, Letter4, Letter5หรือLetterxx |
ช่วงต่างๆ ยังอนุญาตให้รวมคลาสอักขระที่กำหนดไว้ล่วงหน้า คลาสเทียบเท่าสำหรับอักขระที่มีเครื่องหมายเน้นเสียง และสัญลักษณ์การเรียงลำดับสำหรับอักขระที่พิมพ์ยากได้อีกด้วย โดยจะกำหนดให้ตรงกับวงเล็บในนิพจน์ปกติของ POSIX [ 6 ] [ 7 ]
การจับคู่รูปแบบ Unix ดำเนินการโดยเชลล์ตามธรรมเนียม POSIX การจับคู่รูปแบบมีให้สำหรับชื่อไฟล์ที่บรรทัดคำสั่งและในสคริปต์เชลล์ [ 8 ] คำ สั่ง ที่กำหนดโดย POSIX caseในเชลล์จะให้การจับคู่รูปแบบโดยใช้รูปแบบ glob
เชลล์บางตัว (เช่นเชลล์ CและBash ) รองรับไวยากรณ์เพิ่มเติมที่เรียกว่าการสลับหรือการขยายวงเล็บปีกกาเนื่องจากไม่ใช่ส่วนหนึ่งของไวยากรณ์ glob จึงไม่มีให้ในcaseมันจะถูกขยายบนบรรทัดคำสั่งก่อนการใช้ glob เท่านั้น
เชลล์ Bash ยังรองรับส่วนขยายต่อไปนี้ด้วย: [ 9 ]
- การจับคู่รูปแบบขยาย (extglob): อนุญาตให้ใช้ตัวดำเนินการจับคู่รูปแบบอื่นๆ เพื่อจับคู่รูปแบบที่เกิดขึ้นหลายครั้งที่อยู่ในวงเล็บ ซึ่งโดยพื้นฐานแล้วเป็นการให้เครื่องหมายดาวและตัวเลือก kleene ที่ขาดหายไป สำหรับการอธิบายภาษาปกติ สามารถเปิดใช้งานได้โดยการตั้งค่า
extglobตัวเลือกเชลล์ ตัวเลือกนี้มาจาก ksh93 [ 10 ] GNU fnmatch และ glob มีส่วนขยายที่เหมือนกัน[ 3 ] - globstar: อนุญาตให้
**ใช้ส่วนประกอบชื่อเพียงอย่างเดียวเพื่อจับคู่กับไดเร็กทอรีที่ไม่ซ่อนเร้นจำนวนหลายชั้นได้[ 10 ]นอกจากนี้ยังรองรับโดย ไลบรารี JavaScriptและglob ของPython ด้วย
วินโดวส์และดีโอเอส

dirสั่งที่มีรูปแบบ glob ในIBM PC DOS 1.0ระบบ ปฏิบัติการ DOSดั้งเดิมเป็นโปรแกรมที่ลอกเลียนแบบCP/Mซึ่งออกแบบมาให้ทำงานบนโปรเซสเซอร์ Intel 8088และ8086เชลล์ของ Windows ตามแบบ DOS นั้น โดยทั่วไปจะไม่ทำการขยายรูปแบบ glob ในอาร์กิวเมนต์ที่ส่งไปยังโปรแกรมภายนอก อย่างไรก็ตาม เชลล์อาจใช้การขยายรูปแบบสำหรับคำสั่งภายในของตัวเอง:
- Windows PowerShellมีไวยากรณ์ทั่วไปทั้งหมดที่กำหนดไว้ตามที่ระบุไว้ข้างต้นโดยไม่มีการเพิ่มเติมใดๆ[ 11 ]
- COMMAND.COMและcmd.exeมีไวยากรณ์ส่วนใหญ่เหมือนกัน แต่มีข้อจำกัดบางประการ: ไม่มี
[…]และสำหรับ COMMAND.COM นั้น สามารถปรากฏได้เฉพาะที่ส่วนท้ายของรูปแบบเท่านั้น ไม่สามารถปรากฏตรงกลางของรูปแบบได้ ยกเว้นจะอยู่ก่อน หน้าจุดซึ่งเป็นตัวคั่นนามสกุลไฟล์*ทันที
โปรแกรม Windows และ DOS จะได้รับสตริงบรรทัดคำสั่งยาวแทนพารามิเตอร์แบบ argv และเป็นความรับผิดชอบของโปรแกรมเองที่จะทำการแยก การอ้างอิง หรือการขยาย glob ในทางเทคนิคแล้วไม่มีวิธีการกำหนดตายตัวในการอธิบายไวลด์การ์ดในโปรแกรม เนื่องจากโปรแกรมมีอิสระที่จะทำอะไรก็ได้ตามต้องการ ตัวขยาย glob ทั่วไปสองตัวได้แก่: [ 12 ]
- ตัวขยายบรรทัดคำสั่ง Microsoft C Runtime (msvcrt) ซึ่งรองรับเฉพาะ
?และ*[ 13 ]ทั้งReactOS (crt/misc/getargs.c) และWine (msvcrt/data.c) มีการใช้งานโอเพนซอร์สที่เข้ากันได้ของ ซึ่งเป็น__getmainargsฟังก์ชันที่ทำงานอยู่เบื้องหลังใน CRT หลักของพวกเขา - โปรแกรม ขยายบรรทัดคำสั่งของ Cygwinและ MSYS
dcrt0.ccซึ่งใช้glob()รูทีนแบบยูนิกส์อยู่เบื้องหลัง หลังจากแยกอาร์กิวเมนต์แล้ว
ส่วนอื่นๆ ส่วนใหญ่ของ Windows รวมถึง Indexing Service ใช้รูปแบบตัวอักษรตัวแทน (wildcard) แบบ MS-DOS ที่พบใน CMD ไวยากรณ์นี้เป็นสิ่งที่หลงเหลือมาจากยุคชื่อไฟล์ 8.3 โดยให้ความสำคัญเป็นพิเศษกับจุดในรูปแบบและข้อความ (ชื่อไฟล์) ภายในจะทำโดยใช้ตัวอักษรตัวแทนพิเศษสามตัว<>"ในส่วนของ Windows API glob()จะเทียบเท่ากับFindFirstFile()และfnmatch()สอดคล้องกับพื้นฐานRtlIsNameInExpression()[ 14 ] (ตัวอย่างที่คล้ายกันอีกอย่างfnmatch()คือPathMatchSpec()) ตัวขยาย msvcrt แบบโอเพนซอร์สทั้งสองใช้FindFirstFile()ดังนั้นลักษณะเฉพาะของชื่อไฟล์ 8.3 ก็จะใช้ได้กับตัวขยายเหล่านั้นด้วย
คำสั่ง SQL
ตัว ดำเนินการ SQLLIKEมีตัวดำเนินการที่เทียบเท่ากับ?and *แต่ไม่มี ตัวดำเนินการที่เทียบเท่ากับ […].
| ไวลด์การ์ดทั่วไป | ตัวอักษรตัวแทน SQL | คำอธิบาย |
|---|---|---|
? | _ | ตรงกับอักขระตัวเดียวใดๆ |
* | % | ตรงกับอักขระใดๆ ก็ได้จำนวนเท่าใดก็ได้ รวมถึงไม่มีเลยด้วยซ้ำ |
SQL มาตรฐานใช้ไวยากรณ์คล้าย glob สำหรับการจับคู่สตริงอย่างง่ายในตัวLIKEดำเนินการ แม้ว่าโดยทั่วไปแล้วคำว่า "glob" จะไม่ได้ใช้ในชุมชน SQL ก็ตาม เครื่องหมายเปอร์เซ็นต์ (% %) จับคู่กับอักขระตั้งแต่ศูนย์ตัวขึ้นไป และเครื่องหมายขีดล่าง ( __) จับคู่กับอักขระเพียงหนึ่งตัวเท่านั้น
การใช้งาน SQL จำนวนมากได้ขยายLIKEตัวดำเนินการเพื่อให้สามารถใช้ภาษาการจับคู่รูปแบบที่หลากหลายยิ่งขึ้น โดยรวมถึงช่วงอักขระ ( […]) การปฏิเสธ และองค์ประกอบของนิพจน์ปกติ[ 15 ]
เมื่อเปรียบเทียบกับนิพจน์ปกติ
Globs ไม่รวมไวยากรณ์สำหรับKleene starซึ่งอนุญาตให้มีการทำซ้ำส่วนก่อนหน้าของนิพจน์หลายครั้ง ดังนั้นจึงไม่ถือว่าเป็นนิพจน์ปกติซึ่งสามารถอธิบายชุดภาษาปกติ ทั้งหมด เหนือตัวอักษรจำกัดที่กำหนดได้[ 16 ]
| ไวลด์การ์ดทั่วไป | นิพจน์ปกติที่เทียบเท่า |
|---|---|
? | . |
* | .* |
Globs พยายามจับคู่สตริงทั้งหมด (ตัวอย่างเช่นS*.DOCจับคู่S.DOCและSA.DOCแต่ไม่จับคู่ POST.DOCหรือSURREY.DOCKS ) ในขณะที่นิพจน์ปกติอาจจับคู่สตริงย่อยได้ ขึ้นอยู่กับรายละเอียดการใช้งาน
การนำไปใช้ในรูปแบบของนิพจน์ปกติ
การใช้งานการตั้ง ค่าพร็อกซีอัตโนมัติของ Mozilla ดั้งเดิมซึ่งมีฟังก์ชันการจับคู่แบบ glob บนสตริง ใช้การใช้งานการแทนที่ด้วยนิพจน์ปกติ (replace-as-RegExp) ดังที่กล่าวมาข้างต้น ไวยากรณ์วงเล็บเหลี่ยมนั้นบังเอิญครอบคลุมโดยนิพจน์ปกติในตัวอย่างดังกล่าว
fnmatch ของ Python ใช้ขั้นตอนที่ซับซ้อนกว่าในการแปลงรูปแบบให้เป็นนิพจน์ปกติ[ 17 ]
การใช้งานอื่นๆ
นอกเหนือจากการใช้งานในเชลล์แล้ว รูปแบบ glob ยังถูกนำไปใช้ในภาษาโปรแกรมต่างๆ มากมาย โดยส่วนใหญ่ใช้ในการประมวลผลข้อมูลที่มนุษย์ป้อนเข้ามา อินเทอร์เฟซแบบ glob สำหรับการส่งคืนไฟล์ หรืออินเทอร์เฟซแบบ fnmatch สำหรับการจับคู่สตริง พบได้ในภาษาโปรแกรมต่อไปนี้:
- ภาษา CและC++ไม่มีฟังก์ชันรองรับรูปแบบ glob ในไลบรารีมาตรฐานที่กำหนดโดย ISO แต่ในระบบที่คล้าย Unix ภาษา C และ C++ อาจรวมฟังก์ชัน
<glob.h>จากไลบรารี C POSIXเพื่อใช้งาน::glob()ได้- ภาษาC++ เองไม่ได้รองรับรูปแบบ glob โดยตรง แต่สามารถประมาณค่าได้โดยใช้
std::filesystem::directory_iteratorและstd::regex_match() - C++ มีไลบรารีภายนอก เช่นPOCO C++ Librariesซึ่งมี
Poco::Globคลาสที่สามารถดำเนินการกับรูปแบบ glob ได้[ 18 ]
- ภาษาC++ เองไม่ได้รองรับรูปแบบ glob โดยตรง แต่สามารถประมาณค่าได้โดยใช้
- C#มีไลบรารีส่วนขยายอย่างเป็นทางการ[ 19 ]
Microsoft.Extensions.FileSystemGlobbingซึ่งมีคลาส[ 20 ]Microsoft.Extensions.FileSystemGlobbing.Matcher - Dมี
std.path.globMatch()ฟังก์ชัน[ 23 ] - Goมี
filepath.Glob()ฟังก์ชัน[ 24 ] - Java
java.nio.file.Filesมีคลาส[ 25 ]ซึ่งมีเมธอดต่างๆ เช่นสำหรับการดำเนินการกับรูปแบบ glob และส่งคืนค่า คลาสและยังใช้สำหรับการจับคู่รูปแบบ glob ด้วยFiles.newDirectoryStream(Pathdir,Stringglob)DirectoryStream<Path>java.nio.file.FileSystemsjava.nio.file.PathMatcher - Haskellมี
Globแพ็กเกจที่มีโมดูลหลักSystem.FilePath.Globไวยากรณ์รูปแบบนั้นอิงตามส่วนย่อยของZshโดยพยายามปรับรูปแบบที่กำหนดและควรจะเร็วกว่าตัวจับคู่แบบตัวอักษรต่อตัวอักษรอย่างเห็นได้ชัด[ 26 ] - Node.jsมี
globฟังก์ชันในnode:fsโมดูล[ 27 ] - Perlมีทั้ง
globฟังก์ชัน (ตามที่กล่าวถึงใน หนังสือ Programming PerlของLarry Wall ) และ ส่วนขยาย Globซึ่งเลียนแบบรูทีน glob ของ BSD [ 28 ]วงเล็บเหลี่ยมของ Perl สามารถใช้เพื่อ glob ได้เช่นกัน: .<*.log> - PHPมี
globฟังก์ชัน[ 29 ] - Pythonมี
globโมดูลในไลบรารีมาตรฐานที่ทำการจับคู่รูปแบบไวด์การ์ดบนชื่อไฟล์[ 30 ]และfnmatchโมดูลที่มีฟังก์ชันสำหรับการจับคู่สตริงหรือกรองรายการตามรูปแบบไวด์การ์ดเดียวกันนี้[ 17 ] Guido van Rossumผู้เขียนภาษาโปรแกรม Python ได้เขียนและมีส่วนร่วมในglobรูทีนให้กับBSD Unixในปี 1986 [ 31 ]มีการใช้งานก่อนหน้านี้globเช่น ใน โปรแกรม exและftpใน BSD รุ่นก่อนหน้า - Rubyมี
globเมธอดสำหรับDirคลาสที่ทำการจับคู่รูปแบบไวด์การ์ดบนชื่อไฟล์[ 32 ]ไลบรารีหลายแห่ง เช่น Rant และ Rake มีFileListคลาสที่มีเมธอด glob หรือใช้เมธอดFileList.[]ในลักษณะเดียวกัน - Rustเองไม่มีการสนับสนุนในตัวสำหรับการจับคู่รูปแบบ (globbing) แต่มีไลบรารีของบุคคลที่สามหลายแห่งที่สามารถจับคู่รูปแบบ glob ได้[ 33 ]ซึ่งเป็นที่นิยมมากที่สุดคือ
globcrate ซึ่งมีglob()ฟังก์ชันดัง กล่าว [ 34 ] - SQLiteมี
GLOBฟังก์ชัน หนึ่ง - Tclมีฟังก์ชันการรวมกลุ่ม[ 35 ]
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ glob (การเขียนโปรแกรม)
glob() ( / ɡ l ɒ b / ) เป็น ฟังก์ชัน POSIX Cสำหรับ การใช้ globbingซึ่งเป็นการใช้การจับคู่รูปแบบกับชื่อในไดเร็กทอรีของระบบไฟล์แบบ ดั้งเดิม...
ต้นทาง
คำสั่ง glob ซึ่งย่อมาจาก global มีต้นกำเนิดมาจาก Unix เวอร์ชันแรกสุดของ Bell Labs [ 1 ] ตัวแปลคำสั่งของ Unix เวอร์ชันแรกๆ (รุ่นที่ 1 ถึง 6, 1969–1975) อาศัยโปรแกรมแยกต่างหากในการขยายอักขระ ไวด์การ์ด ในอาร์กิวเมนต์ที่ไม่มีเครื่องหมายคำพูดของคำสั่ง: /etc/glob...
ไวยากรณ์
อักขระตัวแทนที่ใช้บ่อยที่สุดคือ * , ? , และ […] .
เหมือนยูนิก
ในระบบ ที่คล้าย Unix * จะ ? ถูกกำหนดไว้ข้างต้น ในขณะที่ […] มีความหมายเพิ่มเติมอีกสองประการ: [ 6 ] [ 7 ]