Quel est le but de shopt -s extglob

15

Je voulais supprimer tous les fichiers du répertoire sauf celui-ci. J'ai trouvé ma solution ici . Cette solution utilise une commande

shopt -s extglob

Je voulais savoir ce que fait exactement cette commande, quelques connaissances en arrière-plan. J'ai également ajouté un commentaire sur cette réponse, mais je n'ai pas obtenu de réponse jusqu'à présent. En tant que nouvel utilisateur d'Ubuntu, je suis curieux de savoir ce que fait cette commande.

Hammad Hassan
la source

Réponses:

16

En termes simples, le globbing fait référence à la correspondance de motifs. Bash utilise un simple globbing comme, echo l*qui s'étend à la liste des fichiers du répertoire courant qui commencent par letter l. Bien sûr, comme vous pouvez le deviner, c'est simple et limité.

Entrez extglob. Comme vous pouvez le deviner, cela signifie extended globbing. Cette option permet une correspondance de motif plus avancée. De man bash:

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

Et un peu avant ça:

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

Il existe une multitude de façons de extglobl'utiliser. De nombreux bons exemples sont fournis dans Linux Journal et le wiki de Greg .

Sergiy Kolodyazhnyy
la source