Яка мета shog -s extglob


16

Я хотів видалити всі файли з каталогу, крім одного. Я знайшов тут своє рішення . Для цього рішення використовується команда

shopt -s extglob

Мені хотілося знати, що саме ця команда виконує, деякі знання в кінці. Я також додав коментар до цієї відповіді, але досі не отримав відповіді. Я, як новий користувач Ubuntu, мені цікаво знати, що робить ця команда.

Відповіді:


17

Простіше кажучи, глобус відноситься до відповідності шаблону. Bash використовує прості глобулі, як, echo l*що розширюються на список файлів у поточному каталозі, що починаються з літери l. Звичайно, як ви здогадаєтесь, це просто і обмежено.

Введіть extglob. Як ви здогадаєтесь, це означає extended globbing. Ця опція дозволяє більш досконале узгодження шаблону. Від man bash:

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

І трохи до цього:

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

Існує безліч способів extglobїх використання. У журналі Linux та у вікі Грега наведено кілька хороших прикладів .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.