Это старая версия документа!
# Подстановочные знаки (Standard Wildcards или Globbing Patterns)
Подстановочные знаки — это символы, имеющие особое значение. Они могут представлять буквы или цифры, наборы символов или даже множество символов.
Когда мы помещаем подстановочные знаки вместо имени файла, то bash расширит эти подстановочные знаки до любого соответствующего имени файла, это называется расширением имени файла или подстановкой (Globbing).
## 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
