Выполнение нескольких команд

ОС позволяет производить запуск нескольких команд в одной строчке. Существует два способа:

  • использование символа ";":
sudo dnf update; sudo dnf upgrade -y

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

  • использование символы "&&":
sudo dnf update && sudo dnf upgrade -y

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

При использовании символа & также можно указать следующую команду. В таком случае первая команда будет выполняться в фоновом режиме, а вторая на первом плане. Например, команда find запускается в фоновом режиме, а ls одновременно выводит содержимое текущего каталога:

find / -name '*sh' > result & ls

Если вместо символа & поставить точку с запятой, то bash поочередно выполнит команды в фоновом режиме:

rls; date

Эта команда сначала отображает содержание текущего каталога, а затем выводит текущий файл.

Если необходимо перенаправить всю эту информацию в файл с помощью ">", то обе команды ставятся в круглых скобках. В таком случае они выполняются одной и той же оболочкой:

user$ (ls; date) > content

В файле content теперь находится список файлов, созданный ls, а также текущая дата (из команды date). Благодаря круглым скобкам обе команды выполняются одной и той же оболочкой и выдают общий результат (как правило, ситуация иная при запуске каждой новой команды активируется новая оболочка).

  • использование символов "||":

Оператор || используется для выполнения второй команды только в том случае, если первая завершилась неуспешно (код завершения не равен 0), например:

команда1 || команда2

Если команда1 завершится успешно, то команда2 не выполнится. В противном случае, если команда1 завершится с ошибкой, команда2 будет выполнена.

Эти операторы && и || предоставляют удобные способы создания цепочек команд с учетом их успешного или неуспешного завершения, что может быть полезным в скриптах и командной строке для управления логикой выполнения команд, то есть в зависимости от результата другой команды.

Например,

user$ команда1 && команда2

выполняет команда1. Только в случае, если эта команда была выполнена успешно (без ошибки, без выдачи 0 в качестве возвращаемого значения), выполняется команда2.

Ниже приведены все варианты использования двух команд (Таблица 1).

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