Bash Linux: &&, || e & – encadeiam ou executam comandos em paralelo

Sumário

Neste tutorial, veremos como encadear e executar comandos no terminal Linux usando os operadores Bash &&, || e &.
Você aprenderá a:

  • executar uma ordem somente se o anterior for bem-sucedido com &&,
  • executar uma ordem se o anterior falhar com ||,
  • execute vários comandos em paralelo com &.

Ao final deste guia, você saberá como dominar esses operadores para tornar seus scripts e o uso do terminal mais eficientes e poderosos.

Use && no Bash para executar um comando somente se o anterior for bem-sucedido.

O operador && permite executar um comando somente se o comando anterior tiver sido bem-sucedidoIsso é ideal para encadear pedidos que dependem uns dos outros.

Alguns exemplos de uso:

Atualização do sistema:

sudo apt update && sudo apt upgrade -y

Atualizando contêineres usando um arquivo docker-compose.yml:

sudo docker compose down && sudo docker compose pull && sudo docker compose up -d

Use || no Bash para executar um comando somente se o anterior falhar.

O operador || é usado para executar um comando somente se o comando anterior falharÉ útil para lidar com erros diretamente no terminal ou em seus scripts.

Exemplos concretos de uso:

Verifique se a pasta existe; caso contrário, crie-a:

[ -d /tmp/mon_dossier ] || mkdir /tmp/mon_dossier

Instale um pacote se o comando falhar:

command -v curl || sudo apt install curl -y

Alerta em caso de falha no pedido:

cp fichier.txt /destination/ || echo "Erreur : impossible de copier fichier.txt"

Execute comandos em paralelo no terminal Bash com &

O símbolo & permite executar um comando. em segundo planoOu seja, executá-lo em paralelo com outros comandos, sem bloquear o terminal.

3 exemplos práticos de uso de & no Bash Executar comandos em paralelo diariamente:

Inicie vários downloads simultaneamente:

wget https://example.com/fichier1.zip &
wget https://example.com/fichier2.zip &
wget https://example.com/fichier3.zip &
wait

Adicionar wait ao final permite que você espere até que todos os downloads sejam concluídos antes de continuar.

Executar vários scripts de processamento em paralelo:

./script1.sh &
./script2.sh &
./script3.sh

Lançamento de múltiplos pings em paralelo:

ping -c 4 google.com &
ping -c 4 cloudflare.com &
ping -c 4 yahoo.com

Bônus: Encadeando vários comandos Bash com ; sem condições

O ponto e vírgula ; permite a execução vários comandos consecutivos em uma única linha, independentemente do sucesso ou do fracasso do comando anterior. É o operador ideal para encadear comandos rapidamente no terminal.

Exemplos práticos para ; em Bash:

Executar vários comandos consecutivos:

echo "Début du script" ; mkdir /tmp/test ; echo "Dossier créé"

Os comandos são executados em ordem, mesmo que mkdir falhe.

Atualize o sistema e depois faça uma limpeza:

sudo apt update ; sudo apt upgrade -y ; sudo apt autoremove -y

Exibir várias mensagens em uma única linha

echo "Bonjour" ; echo "Bienvenue sur le terminal" ; echo "Amusez-vous !"

Conclusão

Neste tutorial, vimos como Encadeamento e execução de comandos no terminal Bash com diferentes operadores:

  • &&: execute o seguinte comando se o anterior for bem-sucedido.
  • ||: execute o seguinte comando se o anterior falhar.
  • &: executar um comando em paralelo em segundo plano.
  • ;: encadeamento de múltiplos comandos incondicionalmente, sempre em ordem.

Dominar esses operadores permite que você torne seus scripts e o uso do terminal mais eficientes. mais eficiente e flexívelSeja para automatizar tarefas, gerenciar erros ou economizar tempo com execução paralela.

Com esses conceitos, você agora é capaz de Controle com precisão a execução de seus comandos Bash. e para otimizar seus scripts Linux.

Romain Drouche

Romain Drouche

Architecte Système | MCSE: Core Infrastructure

Expert en infrastructures IT avec plus de 15 ans d'expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d'Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.