Инструменты пользователя

Инструменты сайта


linux:console:wildcards

Это старая версия документа!


# Подстановочные знаки (Standard Wildcards или Globbing Patterns)

Подстановочные знаки — это символы, имеющие особое значение. Они могут представлять буквы или цифры, наборы символов или даже множество символов.

Когда мы помещаем подстановочные знаки вместо имени файла, то командная оболочка (bash и др.) расширит эти подстановочные знаки до любого соответствующего имени файла, это называется расширением имени файла или подстановкой (Globbing).

Командная оболочка (bash и др.) раскрывает шаблон имён файлов до запуска команды, которая затем обрабатывает полученный список файлов.

## Wildcards

Bash имеет лишь несколько подстановочных знаков, которые он распознает, но они очень мощные.

  • ? - представляет один символ.
  • ** * ** — представляет ноль или более символов.
  • [ ] — представляет диапазон или набор символов.
  • { } – представляет собой список терминов, разделенных запятыми.
  • [! ] — представляет любой символ, не входящий в диапазон или набор.
  • ** \ ** — используется для экранирования любого из вышеуказанных символов, чтобы вы могли искать их в имени файла

Пример использования: ``` $ ls file1.jpg file2.jpg figure.png report.txt facts.txt

$ ls f* file1.jpg file2.jpg figure.png facts.txt

$ ls *.txt report.txt facts.txt ``` здесь, когда выполняется такая команда, как `ls *.txt` то bash расширяет это и заменяет ** *.txt ** любым файлом или каталогом, соответствующим шаблону (в данном случае это: ноль или более символов, за которыми следует «.txt»).

Если мы не укажем явный путь или разделитель путей (т.е. «/») в наши шаблоны, то bash не будет расширяться до имен файлов за пределами текущего каталога.

. ## Примеры использования

### Соответствие многим, одному и нулю символов ( ? и *)

Чтобы сопоставить ноль или несколько символов или ровно один из любого символа, мы используем подстановочные знаки ** * ** и ?

``` $ ls abc abc1 abc2 abc3 xyz xyz1 xyz2 xyz3

$ ls abc* abc abc1 abc2 abc3

$ ls abc? abc1 abc2 abc3 ```

Обратите внимание, что ***** соответствует как abc , так и abc1, abc2, abc3 , тогда как ? не соответствует abc. Это связано с тем, что ** * ** означает ноль или более любых символов, а ? предназначен ровно для одного любого символа.
Если бы мы хотели сопоставить один или несколько символов, то ** * ** не сработает. Однако если мы объединим эти два понятия, как ** ?* **, то это будет соответствовать одному или нескольким символам. ### Наборы и диапазоны, [] ## Документация

Ссылка на Linux Documentation Project - Wildcards

/var/www/html/dokuwiki/data/attic/linux/console/wildcards.1783106832.txt.gz · Последнее изменение: — so_v_a