Выполнение нескольких команд
ОС позволяет производить запуск нескольких команд в одной строчке. Существует два способа:
- использование символа ";":
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, которая интересна администраторам, которые собираются заниматься программированием на языке оболочки.