Was ist der Zweck von shopt -s extglob?


15

Ich wollte alle Dateien außer der einen aus dem Verzeichnis löschen. Ich habe hier meine Lösung gefunden . Diese Lösung verwendet einen Befehl

shopt -s extglob

Ich wollte wissen, was dieser Befehl genau macht, etwas Backend-Wissen. Ich habe auch einen Kommentar zu dieser Antwort hinzugefügt, aber bis jetzt keine Antwort erhalten. Als Ubuntu-Neuling bin ich gespannt, was dieser Befehl leistet.

Antworten:


16

In einfachen Worten, Globbing bezieht sich auf Pattern Matching. Bash verwendet einfache Globen wie, echo l*die eine Liste der Dateien im aktuellen Verzeichnis erweitern, die mit Buchstaben beginnen l. Natürlich, wie Sie sich vorstellen können, ist es einfach und begrenzt.

Eintreten extglob. Wie Sie sich vorstellen können, steht es für extended globbing. Diese Option ermöglicht einen erweiterten Mustervergleich. Von man bash:

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

Und kurz davor:

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

Es gibt eine Vielzahl von Einsatzmöglichkeiten extglob. Nicht wenige gute Beispiele finden Sie im Linux Journal und in Gregs Wiki .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.