Иллюстрированный самоучитель по Linux

Подстановочные символы

Фигурные скобки

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

$ 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.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.