Подстановочные символы
Фигурные скобки
Подстановочные символы в фигурных скобках имеют те же свойства, но применимы к именам, не обязательно связанным с существующими файлами или каталогами. Рассмотрим пример команды с выражением в фигурных скобках.
$ mkdir testdir{1.2.3.4}
По этой команде создаются четыре каталога с именами testdir1, testdir2, testdir3 и testdir4.
Обратите внимание, что элементы выражения в фигурных скобках разделены запятыми, и все они используются последовательно для образования нужных имен. Разделение элементов запятыми предполагает, что они, в отличие от элементов в квадратных скобках, могут содержать более одного символа, например:
$ mkdir testdir{01.02.03.04}
Следует учитывать, что выражение в фигурных скобках должно содержать минимум одну запятую.
Интересно, что в выражения в фигурных скобках можно вкладывать выражения с подстановочными символами имен файлов и каталогов, а также другие выражения в фигурных скобках. Это следствие того, что первыми подставляются вложенные символы. Рассмотрим следующий пример.
$ mkdir newdir/{firstdir,firstdir/'dir<01.02}}
По этой команде создаются следующие каталоги.
firstdir firstdir/dir0l firstdir/dir02
В приведенной команде выражение {01.02} вложено в другое выражение в фигурных скобках.
Точно так же внутри фигурных скобок можно указывать выражения с подстановочными символами имен файлов и каталогов. По команде:
$ chmod 644 testfile.{tx?,bak,0[0-9]}
…происходит изменение разрешений доступа к серии файлов, в том числе ко всем файлам, соответствующим выражениям testfile .tx?, testfile.bak и от testfile.00 до testfile.09.
Подстановка команд
Еще один вариант применения подстановочных символов – подстановка команд, напоминающая конвейеризацию. При конвейеризации стандартный вывод одной команды переадресуется на стандартный ввод другой, при подстановке же он передается другой команде как аргумент или параметр.
Для примера, рассмотрим ситуацию, в которой необходимо сжать все файлы с расширением .bak. Список этих файлов можно получить, введя команду:
$ find / – name '*.bak' – print
Этой же командой с флажком exec можно воспользоваться для сжатия всех файлов.
$ find / – name '*.bak' -exec gzip {} \;
Другой вариант – подстановка команды, как в следующем примере.
$ gzip "find / – name '*.bak' – print"
Здесь команда find заключена в обратные одинарные кавычки, указывающие, что ее результаты должны использоваться как часть командной строки – в данном случае, как аргументы команды gzip.
Существует альтернативная форма этой конструкции – без обратных кавычек:
$ gzip $(find / – name \*.bak – print)
Основное различие между двумя конструкциями – смысл обратной косой (\) в первой из них. Этот смысл сохраняется, если не указаны символы "$","'" или "\".
Примечание
Приведенный перечень подстановочных символов оболочки Bash не полон. Полный список, наряду с подробным описанием, можно найти на странице руководства Bash. Однако и то, что мы описали, обеспечивает немалые возможности. Если вам понадобятся дополнительные средства – связанные с подстановочными символами, обратитесь к странице руководства, воспользовавшись командой man bash.
Что дальше
Итак, вы освоили работу с оболочкой и можете творить чудеса с Bash. Пора переходить к работе с реальными, практическими программами.
В следующей главе мы приступим к изучению важных задач системного администрирования. Среди них – управление пользователями и группами пользователей, составление расписания запуска заданий и управление способами загрузки Linux.