#Linux - Как сократить ввод команд за счет специальных конструкций?

Однако существуют и другие задачи, решение которых требует большого количества операций.

2018.08.31        


1.jpeg Работа с терминалом Linux в основной массе случаев заключается в использовании нескольких простых команд. Однако существуют и другие задачи, решение которых требует большого количества операций. Например, вам может потребоваться многократный ввод одной и той же команды с разными опциями, или использование в качестве параметров результата математических вычислений.

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

2.jpeg

Откройте терминал и запустите пример, приведенный выше. Результатом его выполнения будет создание в домашней директории двух файлов с именами first-file.txt и second-file.txt. Как видите, запись команды уместилась в одну строку, но произошло две операции. Это стало возможным за счет использования механизмов подстановки.

3.jpeg

4.jpeg

Заметка

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

Подстановка имен файлов

При осуществлении файловых операций очень удобно использовать подстановочные символы «*», «» и «?».** Например, для удаления всех файлов, чьи имена заканчиваются на .temp, можно использовать следующую команду «rm путь_директории/*.temp».

Охват имен файлов, отличающихся одним символом, можно осуществить командой «rm путь_директории/dump?.sql». Это полезно если к имени файла дописывается число, соответствующее его версии. Например, dump1.sql и dump9.sql. Однако такая команда не сработает, если версия состоит из двух чисел. В таком случае нужно использовать комбинацию из подстановочных конструкций «[0-9]*». Она соответствует любому количеству символов, входящих в диапазон от нуля до девяти.

Символ «»** похож по принципу действия на «*», но захватывает и все подкаталоги. Например, приведенная выше команда с использованием «»** осуществит удаление файлов не только в указанном каталоге, но и во всех подкаталогах.

5.jpeg

Арифметические выражения

Linux позволяет производить арифметические вычисления при использовании механизмов подстановки с помощью конструкции «$[операция]». Её применение не требует особых пояснений. Мы перечислим лишь список доступных операций и приведем пару примеров.

6.jpeg

Образование последовательностей

Фигурные скобки и значения, заданные внутри них через запятую заменяются всевозможными сочетаниями символов. Например, выражение «{a, b, c}» будет соответствовать отдельным записям «a b c», а сочетание последовательностей «{a,b,c}{d,e,f}» заменяется на «ad ae af bd be bf cd ce cf».

Этот механизм подстановки зачастую применяется при создании файлов или каталогов. Так команде touch можно строго задать директорию, а вместо имени файла использовать конструкцию последовательности.

7.jpeg

Специальные символы в строках

Проблема заключается в том, что терминал принимает некоторые символы за управляющие конструкции, которые подлежат специфичной обработке. Например, символ «*», изученный выше, имеет особую значимость. Как быть если вам нужно передать программе параметр, в котором содержится данный символ?

Для решения такой задачи используются одинарные и двойные кавычки. Все содержимое, помещенное между ними, будет обработано как текст и никак иначе. Единственная оговорка заключается в том, что двойные кавычки делают послабления. Они допускают использование внешних переменных за счет символа $.

8.jpeg

Подстановка результата команды

Иногда требуется передать программе в качестве параметра результат выполнения другой команды. Для этого можно использовать программные каналы, изученные в предыдущих уроках, но самым гибким способом является специальный механизм подстановки обратных кавычек «``».

Его использование понятно на интуитивном уровне. В место, где требуется вставка результата выполнения команды необходимо добавить обратные кавычки, а между ними набрать текст команды.

9.jpeg