Frage Was ist der Zweck von shopt -s extglob


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

shopt -s extglob

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


7
2018-03-05 09:58


Ursprung




Antworten:


In einfachen Worten bezieht sich Globbing auf den Mustervergleich. Bash verwendet einfaches Globbing wie echo l* die zu einer Liste von Dateien im aktuellen Verzeichnis erweitert werden, die mit einem Buchstaben beginnen l. Natürlich, wie Sie erraten können, ist es einfach und begrenzt.

Eingeben extglob. Wie Sie erraten können, steht es für extended globbing. Diese Option ermöglicht eine erweiterte Mustererkennung. Von man bash:

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

Und etwas 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 Möglichkeiten extglob kann verwendet werden. Es gibt einige gute Beispiele dafür Linux-Journal und Gregs Wiki.


10
2018-03-05 10:06