กลับไปหน้าบทความ

อ่าน 7 นาที

glob (การเขียนโปรแกรม)

C POSIX library/Pattern matching/Unix programming tools/ใช้วันที่ dmy ตั้งแต่เดือนกรกฎาคม 2019/ลิงก์ย้อนกลับเทมเพลต Webarchive

glob() ( / ɡ l ɒ b / ) เป็น ฟังก์ชัน POSIX Cสำหรับ การใช้ globbingซึ่งเป็นการใช้การจับคู่รูปแบบกับชื่อในไดเร็กทอรีของระบบไฟล์แบบ ดั้งเดิม...

glob (การเขียนโปรแกรม)

ภาพหน้าจอของหน้าอ้างอิง Unix ดั้งเดิมปี 1971 สำหรับglobเจ้าของคือdmrซึ่งเป็นชื่อย่อของDennis MacAlistair Ritchie

glob() ( / ɡ 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, หรือLawyerGrokLaw, La, หรือaw
*Law*Law, GrokLaw, หรือLawyer. La, หรือaw
?ตรงกับอักขระตัวเดียวใดๆ ?atCat, cat, Batหรือbatat
[abc]ตรงกับอักขระหนึ่งตัวที่ระบุในวงเล็บ [CB]atCatหรือBatcat, batหรือCBat
[a-z]ตรงกับอักขระหนึ่งตัวจากช่วง (ขึ้นอยู่กับภาษาท้องถิ่น) ที่ระบุในวงเล็บ Letter[0-9]Letter0, Letter1, Letter2จนถึงLetter9Letters, LetterหรือLetter10

โดยปกติแล้ว อักขระคั่นเส้นทาง ( /บน Linux/Unix, MacOS ฯลฯ หรือ\บน Windows) จะไม่ตรงกันเลย เชลล์บางตัว เช่นเชลล์ Unixมีฟังก์ชันที่อนุญาตให้ผู้ใช้หลีกเลี่ยงสิ่งนี้ได้[ 5 ]

เหมือนยูนิก

ในระบบที่คล้าย Unix*จะ?ถูกกำหนดไว้ข้างต้น ในขณะที่[…]มีความหมายเพิ่มเติมอีกสองประการ: [ 6 ] [ 7 ]

ไวลด์การ์ด คำอธิบาย ตัวอย่าง การแข่งขัน ไม่ตรงกัน
[!abc]ตรงกับอักขระหนึ่งตัวที่ไม่ได้ระบุไว้ในวงเล็บ [!C]atBat, bat, หรือcatCat
[!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#มีไลบรารีส่วนขยายอย่างเป็นทางการ[ 19 ]Microsoft.Extensions.FileSystemGlobbingซึ่งมีคลาส[ 20 ]Microsoft.Extensions.FileSystemGlobbing.Matcher
    • C# ยังมีไลบรารีภายนอกหลายตัวที่สามารถใช้งานได้ผ่าน NuGetเช่นGlob[ 21 ]หรือDotNet.Glob[ 22 ]
  • Dมีstd.path.globMatch()ฟังก์ชัน[ 23 ]
  • Goมีfilepath.Glob()ฟังก์ชัน[ 24 ]
  • Javajava.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 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Glob_(programming)&oldid=1360174149 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ glob (การเขียนโปรแกรม)

glob() ( / ɡ l ɒ b / ) เป็น ฟังก์ชัน POSIX Cสำหรับ การใช้ globbingซึ่งเป็นการใช้การจับคู่รูปแบบกับชื่อในไดเร็กทอรีของระบบไฟล์แบบ ดั้งเดิม...

ต้นทาง

คำสั่ง glob ซึ่งย่อมาจาก global มีต้นกำเนิดมาจาก Unix เวอร์ชันแรกสุดของ Bell Labs [ 1 ] ตัวแปลคำสั่งของ Unix เวอร์ชันแรกๆ (รุ่นที่ 1 ถึง 6, 1969–1975) อาศัยโปรแกรมแยกต่างหากในการขยายอักขระ ไวด์การ์ด ในอาร์กิวเมนต์ที่ไม่มีเครื่องหมายคำพูดของคำสั่ง: /etc/glob...

ไวยากรณ์

อักขระตัวแทนที่ใช้บ่อยที่สุดคือ * , ? , และ […] .

เหมือนยูนิก

ในระบบ ที่คล้าย Unix * จะ ? ถูกกำหนดไว้ข้างต้น ในขณะที่ […] มีความหมายเพิ่มเติมอีกสองประการ: [ 6 ] [ 7 ]