เฉพาะสตริงที่ยกมาไม่ได้อยู่ที่ globbing:
$ echo ".[].aliases[]"
.[].aliases[]
แต่สตริงที่ไม่ยกมาอาจมีการโค้ง สตริง unquoted ว่ามี*
หรือ?
หรือ (ที่ถูกต้อง) []
(แสดงออกวงเล็บ) จะได้รับการแก้ไขโดยรายชื่อของไฟล์ที่ตรงกับมัน ในทำนองเดียวกับ a *
จะแปลงเป็นไฟล์ทั้งหมดในไดเรกทอรีที่ตรงกันและ a ?
จะจับคู่ไฟล์ที่มีอักขระเพียงตัวเดียว a (ที่ถูกต้อง) []
จะจับคู่ไฟล์กับอักขระที่อยู่ภายในวงเล็บ จุดเป็นอักขระที่ถูกต้อง:
$ echo a[.]b
a[.]b
$ touch "a.b"
$ echo a[.]b
a.b
เพื่อให้สามารถตรงกับ]
มันควรเป็นตัวอักษรตัวแรกในวงเล็บ:
$ touch "a]b"
$ ls a[]]b
a]b
การแสดงออกวงเล็บว่างเปล่าทำให้รู้สึกไม่ (และไม่ได้ขยาย):
$ touch ab
$ ls a[]b
ls: cannot access 'a[]b': No such file or directory
นั่นคือเหตุผลที่ทำงานนี้:
$ touch a]c abc afc azc a:c a?c aoc
$ ls a[]bfz:?]c
abc a:c a?c a]c afc azc
สำหรับ[
ความคิดที่คล้ายกัน:
$ touch a[c
$ ls a[[]c
a[c
แต่มันอาจจะอยู่ที่ตำแหน่งใด ๆ ในการแสดงออกวงเล็บ:
$ ls a[]bf[z:?]c
abc a:c a?c a[c a]c afc azc
$ ls a[]bfz:?[]c
abc a:c a?c a[c a]c afc azc
สตริงที่คุณโพสต์.[].foo[]
จะตรงกับจุดตามมาด้วยทั้ง]
ที่.
เป็นf
เป็นหรือo
[
มันคล้ายกับ:
$ echo a[].foo[]c
a[c a]c afc aoc
และจะจับคู่ดังนี้:
$ touch .] .f .o .[ .a .b .z
$ echo .[].foo[]
.. .[ .] .f .o
โปรดทราบว่า..
ไม่จำเป็นต้องสร้างรายการไดเรกทอรีเนื่องจากมีอยู่ในทุก ๆ ไดเรกทอรีโดยค่าเริ่มต้น แต่จุดที่เรียบง่าย.
จะไม่ถูกจับคู่โดย glob เนื่องจากจะต้องจับคู่อย่างชัดเจน (โดยใช้จุด)
แต่นั่นจะไม่ตรงกัน..aliases
เนื่องจากนิพจน์วงเล็บเหลี่ยมจะจับคู่อักขระเพียงตัวเดียวเท่านั้น ในการจับคู่อักขระหลายตัวคุณต้องใช้*
(อะไรก็ได้):
$ touch ..a ..l ..i ..aliases ..alias ..ali
$ echo .[].aliases[]
.. .[ .] .a
$ echo .[].aliases[]*
.. .[ .] .a ..a ..ali ..alias ..aliases ..i ..l