shopt -s extglobの目的は何ですか


15

ディレクトリ以外のすべてのファイルを削除したかった。ここで解決策を見つけまし。このソリューションはコマンドを使用しています

shopt -s extglob

このコマンドが正確に何をしているのか、バックエンドの知識を知りたかった。この回答にもコメントを追加しましたが、今まで返信がありませんでした。Ubuntuの新規ユーザーとして、このコマンドが何をしているのか知りたいです。

回答:


16

簡単に言えば、グロビングとはパターンマッチングのことです。Bashはecho l*、現在のディレクトリ内でletterで始まるファイルのリストに展開するような単純なグロビングを使用します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 JournalGregのwikiにはかなり良い例が提供されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.