Как выполнить несколько команд bash в одной строке консоли?

«Как выполнить несколько команд bash в одной строке консоли?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В bash есть несколько операторов для объединения команд в одну строку, каждый со своей логикой выполнения:

Последовательное выполнение:

  • ; (точка с запятой) — выполняет команды последовательно, независимо от успеха предыдущих.
    echo "Шаг 1"; echo "Шаг 2"; echo "Шаг 3"
  • && (логическое И) — выполняет следующую команду только если предыдущая завершилась успешно (код возврата 0). Это стандартная практика для скриптов развертывания.
    apt update && apt upgrade -y && systemctl restart nginx

Параллельное выполнение:

  • & — запускает команду в фоновом режиме, позволяя сразу вводить следующую.
    long_running_task.sh & tail -f /var/log/app.log
  • | (пайп) — передает вывод (stdout) одной команды на вход (stdin) другой.
    cat access.log | grep "ERROR" | wc -l

Группировка команд: Используйте {} или () для группировки. Команды в {} выполняются в текущей оболочке, в () — в под-оболочке.

{ cd /opt/app && docker-compose up -d; } > deployment.log 2>&1

Практический пример для DevOps: Часто используется цепочка && для безопасного развертывания: проверить конфигурацию, собрать образ, запустить миграции, обновить поды.

kubectl apply --dry-run=client -f k8s/ && docker build -t myapp:v2 . && kubectl set image deployment/myapp myapp=myapp:v2