ผลต่างระหว่างรุ่นของ "01204223/filename expansion"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 9: | แถว 9: | ||
shell จะขยายแพทเทิร์น <tt>*.c</tt> ด้วยไฟล์ที่ตรงกับที่แพทเทิร์นนั้นระบุ | shell จะขยายแพทเทิร์น <tt>*.c</tt> ด้วยไฟล์ที่ตรงกับที่แพทเทิร์นนั้นระบุ | ||
+ | |||
+ | == แพทเทิร์น == | ||
+ | |||
+ | เราสามารถใช้อักขระพิเศษต่อไปนี้ในการเขียนแพทเทิร์นได้ | ||
+ | |||
+ | * '''<tt>*</tt>''' --- จะแทนสตริงใด ๆ รวมถึงสตริงว่าง | ||
+ | * '''<tt>?</tt>''' --- จะแทนตัวอักษรตัวเดียว | ||
+ | * '''<tt>[...]</tt>''' --- เราสามารถระบุเซตของตัวอักษรที่จะถูกแทนได้ เช่น <tt>[acd]</tt> จะแทนตัวอักษร a, c, หรือ d ก็ได้ โดยเราสามารถใช้เครื่องหมาย - ในการระบุได้ด้วย เช่น <tt>[a-z]</tt> จะแทนตัวอักษรภาษาอังกฤษพิมพ์เล็ก หรือ <tt>[a-z0-9]</tt> จะรวมตัวเลขเข้าไปด้วย นอกจากนี้ ถ้าเราขึ้นต้นรายการด้วย <tt>^</tt> หรือ <tt>!</tt> เซตนี้จะแทนตัวอักษรทั้งหมดที่ไม่อยู่ในรายการ เช่น <tt>[^0-9]</tt> จะแทนตัวอักษรทั้งหมดที่ไม่ใช่ตัวเลข |
รุ่นแก้ไขเมื่อ 03:18, 10 มิถุนายน 2555
ในการทำงานบนระบบ unix โดยผ่านทาง shell ทั่วไป เราจะได้รับการอำนวยความสะดวกหลายอย่างจาก shell สิ่งหนึ่งก็คือการใช้งานแพทเทิร์นเพื่อระบุชื่อไฟล์ ทั้งหมดนี้อยู่ในสิ่งที่เราเรียกว่า word expansion (หรือ word substitution
ลักษณะของ word expansion ที่ shell ทำให้นั้น จะเป็นการขยายคำสั่งที่เราพิมพ์เข้าไป พิจารณาตัวอย่างของคำสั่ง echo เมื่อเรียกในไดเร็กทอรีที่มีไฟล์ test.c และ hello.c
$ echo hello world hello world $ echo hello world *.c hello world test.c hello.c
shell จะขยายแพทเทิร์น *.c ด้วยไฟล์ที่ตรงกับที่แพทเทิร์นนั้นระบุ
แพทเทิร์น
เราสามารถใช้อักขระพิเศษต่อไปนี้ในการเขียนแพทเทิร์นได้
- * --- จะแทนสตริงใด ๆ รวมถึงสตริงว่าง
- ? --- จะแทนตัวอักษรตัวเดียว
- [...] --- เราสามารถระบุเซตของตัวอักษรที่จะถูกแทนได้ เช่น [acd] จะแทนตัวอักษร a, c, หรือ d ก็ได้ โดยเราสามารถใช้เครื่องหมาย - ในการระบุได้ด้วย เช่น [a-z] จะแทนตัวอักษรภาษาอังกฤษพิมพ์เล็ก หรือ [a-z0-9] จะรวมตัวเลขเข้าไปด้วย นอกจากนี้ ถ้าเราขึ้นต้นรายการด้วย ^ หรือ ! เซตนี้จะแทนตัวอักษรทั้งหมดที่ไม่อยู่ในรายการ เช่น [^0-9] จะแทนตัวอักษรทั้งหมดที่ไม่ใช่ตัวเลข