Bash Linux: &&, || e & – concatenano o eseguono comandi in parallelo

In questo tutorial vedremo come concatenare ed eseguire comandi nel terminale Linux utilizzando gli operatori Bash &&, || e &.
Imparerai a:

  • eseguire un ordine solo se il precedente ha successo con &&,
  • eseguire un ordine se il precedente fallisce con ||,
  • eseguire più comandi in parallelo con &.

Al termine di questa guida, saprai come padroneggiare questi operatori per rendere i tuoi script e l’utilizzo del terminale più efficienti e potenti.

In Bash, usa && per eseguire un comando solo se il precedente ha avuto successo.

L’operatore && viene utilizzato per eseguire un comando solo se il comando precedente è andato a buon fineQuesta soluzione è ideale per concatenare ordini che dipendono l’uno dall’altro.

Alcuni esempi di utilizzo:

Aggiornamento del sistema:

sudo apt update && sudo apt upgrade -y

Aggiornamento dei container tramite un file docker-compose.yml:

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

In Bash, usa || per eseguire un comando solo se il precedente fallisce.

L’operatore || consente di eseguire un comando solo se il comando precedente non è riuscitoÈ utile per gestire gli errori direttamente nel terminale o nei tuoi script.

Esempi concreti di utilizzo:

Verifica se la cartella esiste, altrimenti creala:

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

Installa un pacchetto se il comando non riesce:

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

Avviso in caso di errore nell’ordine:

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

Eseguire i comandi in parallelo nel terminale Bash con &

Il simbolo & consente di avviare un comando sullo sfondovale a dire, eseguirlo in parallelo con altri comandi, senza bloccare il terminale.

3 esempi pratici di utilizzo di & in Bash per eseguire i comandi in parallelo su base giornaliera:

Avvia più download contemporaneamente:

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

L’aggiunta di wait alla fine ti consente di attendere il completamento di tutti i download prima di continuare.

Eseguire più script di elaborazione in parallelo:

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

Avvio di più ping in parallelo:

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

Bonus: Concatenare più comandi Bash con ; senza condizioni

Il punto e virgola ; consente l’esecuzione diversi comandi consecutivi su una singola riga, indipendentemente dal successo o dal fallimento del comando precedente. È l’operatore ideale per concatenare rapidamente i comandi nel terminale.

Esempi pratici per ; in Bash:

Eseguire più comandi consecutivi:

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

I comandi vengono eseguiti al fine, anche se mkdir fallisce.

Aggiorna il sistema e poi ripuliscilo:

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

Visualizza più messaggi su una singola riga

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

Conclusione

In questo tutorial abbiamo visto come concatenare ed eseguire comandi nel terminale Bash con diversi operatori:

  • &&: esegui il seguente comando se il precedente ha successo.
  • ||: esegui il seguente comando se il precedente fallisce.
  • &: avvia un comando in parallelo sullo sfondo.
  • ;: concatenazione di più comandi incondizionatamente, sempre in ordine.

Padroneggiare questi operatori permette di rendere più efficienti gli script e l’utilizzo del terminale. più efficiente e flessibileche si tratti di automatizzare le attività, gestire gli errori o risparmiare tempo con l’esecuzione parallela.

Con questi concetti, ora sei in grado di controlla con precisione l’esecuzione dei tuoi comandi Bash e per ottimizzare i tuoi script Linux.

Romain Drouche
Romain Drouche
Architetto di sistema | MCSE: Infrastruttura di base
Esperto di infrastrutture IT con oltre 15 anni di esperienza sul campo. Attualmente Project Manager Sistemi e Reti ed esperto di Sicurezza dei Sistemi Informativi (ISS), utilizzo la mia competenza per garantire l'affidabilità e la sicurezza degli ambienti tecnologici.

Lascia un commento