Групповые символы

Прежде чем приступать к использованию обсуждаемых команд, необходимо сначала поговорить об одной особенности командной оболочки, которая делает эти команды такими мощными. Так как имена файлов используются в командной оболочке повсеместно, она поддерживает специальные символы, помогающие быстро определять группы имен файлов. Эти специальные символы называют групповыми символами (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»

Групповые символы можно использовать с любыми командами, принимающими имена файлов в виде аргументов, но подробнее об этом мы поговорим в главе 7.

групповые символы также действуют в графическом интерфейсе

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

• В Nautilus (диспетчер файлов для GNOME) можно выбирать файлы с помощью диалога Edit (Правка) —> Select Pattern (Выделить по шаблону). Просто введите шаблон для выбора файлов с групповыми символами, и в текущем каталоге будут выделены файлы, соответствующие шаблону.

• В некоторых версиях Dolphin и Konqueror (диспетчеры файлов для KDE) групповые символы можно вводить непосредственно в адресную строку. Например, если понадобится увидеть все файлы с именами, начинающимися с буквы «u» в нижнем регистре, в каталоге /usr/bin, просто введите в адресной строке текст: /usr/bin/u*, и вы получите желаемый результат.

Большинство идей, первоначально реализованных в интерфейсе командной строки, перекочевали и в графический интерфейс. Это одно из множества обстоятельств, которые делают настольный компьютер с Linux таким мощным инструментом.