Работа с терминалом Linux в основной массе случаев заключается в использовании нескольких простых команд. Однако существуют и другие задачи, решение которых требует большого количества операций. Например, вам может потребоваться многократный ввод одной и той же команды с разными опциями, или использование в качестве параметров результата математических вычислений.
Как и следовало ожидать, командная оболочка Linux имеет встроенные инструменты, позволяющие упростить такого рода действия. Они называются джокерными символами или механизмами подстановки.
Откройте терминал и запустите пример, приведенный выше. Результатом его выполнения будет создание в домашней директории двух файлов с именами first-file.txt и second-file.txt. Как видите, запись команды уместилась в одну строку, но произошло две операции. Это стало возможным за счет использования механизмов подстановки.
Заметка
Использование механизмов подстановки Linux с первого взгляда может показаться сложным и непривычным. После непродолжительной практики вы измените свое мнение. Данный инструментарий очень полезен и легок в использовании. Общий принцип действия заключается в том, что они заменяют себя на результат выполнения.
Подстановка имен файлов
При осуществлении файловых операций очень удобно использовать подстановочные символы «*», «» и «?».** Например, для удаления всех файлов, чьи имена заканчиваются на .temp, можно использовать следующую команду «rm путь_директории/*.temp».
Охват имен файлов, отличающихся одним символом, можно осуществить командой «rm путь_директории/dump?.sql». Это полезно если к имени файла дописывается число, соответствующее его версии. Например, dump1.sql и dump9.sql. Однако такая команда не сработает, если версия состоит из двух чисел. В таком случае нужно использовать комбинацию из подстановочных конструкций «[0-9]*». Она соответствует любому количеству символов, входящих в диапазон от нуля до девяти.
Символ «»** похож по принципу действия на «*», но захватывает и все подкаталоги. Например, приведенная выше команда с использованием «»** осуществит удаление файлов не только в указанном каталоге, но и во всех подкаталогах.
Арифметические выражения
Linux позволяет производить арифметические вычисления при использовании механизмов подстановки с помощью конструкции «$[операция]». Её применение не требует особых пояснений. Мы перечислим лишь список доступных операций и приведем пару примеров.
Образование последовательностей
Фигурные скобки и значения, заданные внутри них через запятую заменяются всевозможными сочетаниями символов. Например, выражение «{a, b, c}» будет соответствовать отдельным записям «a b c», а сочетание последовательностей «{a,b,c}{d,e,f}» заменяется на «ad ae af bd be bf cd ce cf».
Этот механизм подстановки зачастую применяется при создании файлов или каталогов. Так команде touch можно строго задать директорию, а вместо имени файла использовать конструкцию последовательности.
Специальные символы в строках
Проблема заключается в том, что терминал принимает некоторые символы за управляющие конструкции, которые подлежат специфичной обработке. Например, символ «*», изученный выше, имеет особую значимость. Как быть если вам нужно передать программе параметр, в котором содержится данный символ?
Для решения такой задачи используются одинарные и двойные кавычки. Все содержимое, помещенное между ними, будет обработано как текст и никак иначе. Единственная оговорка заключается в том, что двойные кавычки делают послабления. Они допускают использование внешних переменных за счет символа $.
Подстановка результата команды
Иногда требуется передать программе в качестве параметра результат выполнения другой команды. Для этого можно использовать программные каналы, изученные в предыдущих уроках, но самым гибким способом является специальный механизм подстановки обратных кавычек «``».
Его использование понятно на интуитивном уровне. В место, где требуется вставка результата выполнения команды необходимо добавить обратные кавычки, а между ними набрать текст команды.