Это старая версия документа!
# Подстановочные знаки (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
