Logo
Версия для печати

Выполнение команд в Linux (объединения их посредством операторов)

Ни для кого не будет секретом, что рано или поздно человек осваивающий "пингвина" столкнётся с надобностью исполнения тех или иных команд в командной строчке. И хорошо если она одна... а если их две, три или n-количество. Тут у нас возникает два варианта:

  1. Вводить их поочерёдно, дожидаясь выполнения предыдущей.
  2. Автоматизировать этот процесс по максимуму.

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

Оператор ;

comand1 ; comand2; comand3

При использовании этого оператора - ; команды будут выполнены последовательно одна за другой, т.е. сначала будет запущена команда comand1 на выполнение, оболочка дождется её завершения и запустит comand2, а после неё comand3. Закончив с последней командой оболочка вернёт командную строчку пользователю, ожидая следующих действий.

Пример использования:

apt-get clean ; apt-get update

Данная связка сначала очистит кэш, а потом проверит нет ли новых обновлений.

Оператор &

Данный оператор используется для того чтобы перевести выполнение команд в фоновый режим. Таким способом можно в фоновом режиме последовательно выполнить несколько команд, главное после каждой не забывайте поставить &:

comand1 & comand2 &

Оператор &&

comand1 && comand2

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

Пример использования:

apt-get dist-upgrade -y && apt-get clean && reboot

Т.е. в случае успешного полного обновления всей системы будет выполнена очистка кэша обновлений, и вслед за ней – перезагрузка (любимая мною связка). А мы тем временем будем попивать кофеёк и может быть клеить секретаршу Подмигиваю. Если же по каким-то причинам обновление системы будет отменено - все последующие команды выполняться не будут.

Оператор ||

comand1 || comand2

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

© Домашний компьютер 2024