Qual é o objetivo do shopt -s extglob

7

Eu queria excluir todos os arquivos do diretório, exceto o. Eu encontrei minha solução aqui . Esta solução está usando um comando

shopt -s extglob

Eu queria saber o que este comando está fazendo exatamente, algum conhecimento de back-end. Eu também adicionei um comentário sobre esta resposta, mas não recebi uma resposta até agora. Como novo usuário do Ubuntu, estou curioso para saber o que este comando está fazendo.

    
por Hammad Hassan 05.03.2017 / 10:58

1 resposta

10

Em termos simples, globbing refere-se à correspondência de padrões. O Bash usa globbing simples como echo l* , que expande a lista de arquivos no diretório atual que começam com a letra l . Claro, como você pode imaginar, é simples e limitado.

Digite extglob . Como você pode imaginar, significa extended globbing . Esta opção permite uma correspondência de padrões mais avançada. De man bash :

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

E um pouco antes disso:

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

Existe uma infinidade de maneiras em que extglob pode ser usado. Alguns bons exemplos são fornecidos no Linux Journal e Wiki do Google Cloud .

    
por Sergiy Kolodyazhnyy 05.03.2017 / 11:06