Jaki jest cel shopt -s extglob

16

Chciałem usunąć wszystkie pliki z katalogu oprócz jednego. Tutaj znalazłem swoje rozwiązanie . To rozwiązanie używa polecenia

shopt -s extglob

Chciałem wiedzieć, co dokładnie robi to polecenie, trochę wiedzy na temat zaplecza. Dodałem również komentarz do tej odpowiedzi, ale do tej pory nie otrzymałem odpowiedzi. Jako nowy użytkownik Ubuntu ciekawi mnie, co robi to polecenie.

Hammad Hassan
źródło

Odpowiedzi:

17

Mówiąc prościej, globowanie odnosi się do dopasowania wzorca. Bash używa prostego globowania, echo l*które rozwija się do listy plików w bieżącym katalogu, które zaczynają się na literę l. Oczywiście, jak można się domyślić, jest to proste i ograniczone.

Enter extglob. Jak można się domyślić, oznacza to extended globbing. Ta opcja pozwala na bardziej zaawansowane dopasowanie wzorca. Od man bash:

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

A nieco wcześniej:

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

Istnieje wiele sposobów extglobwykorzystania. Kilka dobrych przykładów znajduje się w Linux Journal i wiki Grega .

Sergiy Kolodyazhnyy
źródło