¿Cuál es el propósito de shopt -s extglob?


15

Quería eliminar todos los archivos del directorio excepto el uno. Encontré mi solución aquí . Esta solución está usando un comando

shopt -s extglob

Quería saber qué está haciendo exactamente este comando, algunos conocimientos de back-end. También agregué un comentario sobre esta respuesta, pero no recibí respuesta hasta ahora. Como nuevo usuario de Ubuntu, tengo curiosidad por saber qué está haciendo este comando.

Respuestas:


16

En términos simples, el globbing se refiere a la coincidencia de patrones. Bash utiliza un meneo simple, echo l*que se expande a la lista de archivos en el directorio actual que comienza con la letra l. Por supuesto, como puedes adivinar, es simple y limitado.

Introduzca extglob. Como puedes adivinar, significa extended globbing. Esta opción permite una coincidencia de patrones más avanzada. De man bash:

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

Y un poco antes de eso:

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

Hay multitud de formas en las que extglobse puede usar. Se proporcionan bastantes buenos ejemplos en Linux Journal y la wiki de Greg .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.