Прежде чем приступать к использованию обсуждаемых команд, необходимо сначала поговорить об одной особенности командной оболочки, которая делает эти команды такими мощными. Так как имена файлов используются в командной оболочке повсеместно, она поддерживает специальные символы, помогающие быстро определять группы имен файлов. Эти специальные символы называют групповыми символами (wildcards). Групповые символы (также известны как символы подстановки (globbing)) позволяют выбирать имена файлов по шаблону. В табл. 4.1 перечислены групповые символы и их соответствия.
Таблица 4.1. Групповые символы
Групповой символ | Соответствует |
* | Любая последовательность любых символов |
? | Любой один символ |
[символы] | Любой один символ из указанного множества символов |
[!символы] | Любой один символ, не принадлежащий указанному множеству символов |
[[:класс:]] | Любой один символ, принадлежащий указанному классу |
В табл. 4.2 представлены наиболее часто используемые классы символов.
Таблица 4.2. Наиболее часто используемые классы символов
Класс символов | Соответствует |
[:alnum:] | Любой алфавитно-цифровой символ |
[:alpha:] | Любой алфавитный символ |
[:digit:] | Любой цифровой символ |
[:lower:] | Любая буква в нижнем регистре |
[:upper:] | Любая буква в верхнем регистре |
Если у вас уже есть опыт работы с другим Unix-подобным окружением или вам приходилось читать другие книги по этой теме, вы встречали форму записи диапазонов символов [A-Z] или [a-z]. Это традиционные для Unix формы записи, и они прекрасно работают в старых версиях Linux. Более того, они все еще работают в новых версиях, но будьте очень осторожны при их использовании, потому что они не всегда дают ожидаемый результат без правильной настройки. А вообще, старайтесь избегать их и использовать классы символов.
Групповые символы позволяют конструировать сложные критерии выбора имен файлов. В табл. 4.3 перечислены некоторые примеры шаблонов и их соответствия.
Таблица 4.3. Примеры использования групповых символов
Шаблон | Соответствует |
* | Все имена файлов |
g* | Все имена файлов, начинающиеся с символа «g» |
b*.txt | Все имена файлов, начинающиеся с символа «b», за которым следует любое число других символов, и заканчивающиеся на «.txt» |
Data??? | Все имена файлов, начинающиеся с символов «Data», за которыми следуют ровно три любых символа |
[abc]* | Все имена файлов, начинающиеся с символа «a», «b» или «c» |
BACKUP.[0-9][0-9][0-9] | Все имена файлов, начинающиеся с символов «BACKUP.», за которыми следуют ровно три цифровых символа |
[[:upper:]]* | Все имена файлов, начинающиеся с буквы в верхнем регистре |
[![:digit:]]* | Все имена файлов, не начинающиеся с цифры |
*[[:lower:]123] | Все имена файлов, заканчивающиеся буквой в нижнем регистре или цифрой «1», «2» или «3» |