วัตถุประสงค์ของ shopt -s extglob คืออะไร


15

ฉันต้องการลบไฟล์ทั้งหมดจากไดเรกทอรียกเว้นไฟล์เดียว ผมพบว่าวิธีการแก้ปัญหาของฉันที่นี่ วิธีนี้ใช้คำสั่ง

shopt -s extglob

ฉันต้องการที่จะรู้ว่าสิ่งที่คำสั่งนี้กำลังทำอะไรอยู่บางความรู้ส่วนหลัง ฉันยังเพิ่มความคิดเห็นในคำตอบนี้ แต่ยังไม่ได้รับคำตอบจนถึงตอนนี้ ในฐานะผู้ใช้ใหม่ของ Ubuntu ฉันอยากรู้ว่าคำสั่งนี้กำลังทำอะไร

คำตอบ:


16

กล่าวง่ายๆว่าการวนรอบหมายถึงการจับคู่รูปแบบ ทุบตีใช้ globbing ง่ายเหมือนที่ขยายไปยังรายชื่อของไฟล์ในไดเรกทอรีปัจจุบันที่เริ่มต้นด้วยตัวอักษรecho l* lแน่นอนว่าคุณเดาได้ง่ายและ จำกัด

extglobเข้าสู่ extended globbingในขณะที่คุณสามารถคาดเดามันย่อมาจาก ตัวเลือกนี้ช่วยให้การจับคู่รูปแบบขั้นสูงเพิ่มเติม จากman bash:

extglob If set, the extended pattern matching features described
        above under Pathname Expansion are enabled.

และก่อนหน้านั้นเล็กน้อย:

If the extglob shell option is enabled using the shopt builtin, several
extended pattern matching operators are recognized.  In  the  following
description, a pattern-list is a list of one or more patterns separated
by a |.  Composite patterns may be formed using  one  or  more  of  the
following sub-patterns:

      ?(pattern-list)
             Matches zero or one occurrence of the given patterns
      *(pattern-list)
             Matches zero or more occurrences of the given patterns
      +(pattern-list)
             Matches one or more occurrences of the given patterns
      @(pattern-list)
             Matches one of the given patterns
      !(pattern-list)
             Matches anything except one of the given patterns

มีวิธีการมากมายextglobให้ใช้ มีตัวอย่างที่ดีอยู่บ้างในLinux Journalและwiki ของ Greg

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.