<ก่อนหน้านี้ | Contents | ถัดไป>
การขยายชื่อเส้นทาง
กลไกการทำงานไวด์การ์ดเรียกว่า การขยายชื่อพาธ. หากเราลองใช้เทคนิคบางอย่างที่เราใช้ในบทก่อนหน้านี้ เราจะเห็นว่ามันเป็นส่วนเสริมจริงๆ รับโฮมไดเร็กทอรีที่มีลักษณะดังนี้:
[me@linuxbox ~]$ ls | ||
เดสก์ท็อป ls-output.txt | ภาพ | แม่แบบ |
เอกสาร ดนตรี | สาธารณะ | วิดีโอ |
เราสามารถดำเนินการขยายต่อไปนี้:
[me@linuxbox ~]$ เสียงสะท้อน D*
เอกสารเดสก์ท็อป
[me@linuxbox ~]$ เสียงสะท้อน D*
เอกสารเดสก์ท็อป
และ:
[me@linuxbox ~]$ เสียงสะท้อน *s
เอกสาร รูปภาพ แม่แบบ วิดีโอ
[me@linuxbox ~]$ เสียงสะท้อน *s
เอกสาร รูปภาพ แม่แบบ วิดีโอ
หรือแม้กระทั่ง:
[me@linuxbox ~]$ เสียงก้อง [[:upper:]]*
เอกสารเดสก์ทอป ดนตรี รูปภาพ เทมเพลตสาธารณะ วิดีโอ
[me@linuxbox ~]$ เสียงก้อง [[:upper:]]*
เอกสารเดสก์ทอป ดนตรี รูปภาพ เทมเพลตสาธารณะ วิดีโอ
และมองข้ามไดเรกทอรีหลักของเรา:
[me@linuxbox ~]$ เสียงสะท้อน /usr/*/share
/usr/kerberos/share /usr/local/share
[me@linuxbox ~]$ เสียงสะท้อน /usr/*/share
/usr/kerberos/share /usr/local/share
การขยายชื่อพาธของไฟล์ที่ซ่อนอยู่
ดังที่เราทราบ ชื่อไฟล์ที่ขึ้นต้นด้วยอักขระจุดจะถูกซ่อนไว้ การขยายชื่อพาธยังคำนึงถึงพฤติกรรมนี้ด้วย การขยายตัวเช่น:
เสียงสะท้อน *
ไม่เปิดเผยไฟล์ที่ซ่อนอยู่
ในแวบแรกอาจปรากฏว่าเราสามารถรวมไฟล์ที่ซ่อนอยู่ในส่วนขยายโดยเริ่มรูปแบบด้วยจุดนำดังนี้:
เสียงสะท้อน .*
มันเกือบจะได้ผล อย่างไรก็ตามหากเราตรวจสอบผลลัพธ์อย่างใกล้ชิดจะเห็นว่าชื่อ “.” และ “..” จะปรากฏในผลลัพธ์ด้วย เนื่องจากชื่อเหล่านี้อ้างอิงถึงไดเร็กทอรีการทำงานปัจจุบันและไดเร็กทอรีหลัก การใช้รูปแบบนี้จึงน่าจะให้ผลลัพธ์ที่ไม่ถูกต้อง เราจะเห็นสิ่งนี้หากเราลองใช้คำสั่ง:
ls -d .* | น้อย
เพื่อให้ดำเนินการขยายชื่อพาธได้ดีขึ้นในสถานการณ์นี้ เราต้องใช้รูปแบบที่เฉพาะเจาะจงมากขึ้น:
ก้อง .[!.]*
รูปแบบนี้จะขยายไปยังทุกชื่อไฟล์ที่ขึ้นต้นด้วยจุด ไม่รวมจุดที่สอง และตามด้วยอักขระอื่นๆ ซึ่งจะทำงานได้อย่างถูกต้องกับไฟล์ที่ซ่อนอยู่ส่วนใหญ่ (แม้ว่าจะยังไม่รวมชื่อไฟล์ที่มีจุดนำหน้าหลายจุดก็ตาม) NS ls สั่งกับ -A ตัวเลือก ("เกือบทั้งหมด") จะให้รายการไฟล์ที่ซ่อนอยู่ที่ถูกต้อง:
ลส -ก