Try   HackMD

✨ LA GUIDA DEFINITIVA: BASH

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Ciao!

La serie delle "GUIDE DEFINITIVE" è un progetto creato in parte per scherzo e in parte per aiutare chi ne ha bisogno. Se riscontri problemi, errori o simili, puoi inviarmi un messaggio su Telegram tramite (@clipwav), cercherò di rispondere il prima possibile!

Grazie mille!
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Bash (Bourne-Again SHell) è un linguaggio di scripting (e non di programmazione) e un interprete di comandi per l'ambiente Unix/Linux.

Questa guida ti aiuterà a imparare i comandi più comuni e le funzionalità di base di Bash!

Prerequisiti

Per scrivere script in Bash, ti servirà

  • Un computer con qualunque sistema basato su Unix/Linux, questo include Ubuntu e MacOS, anche tramite Macchina Virtuale
    (Non hai una VM a disposizione? Ho scritto una guida per crearne una! 😉 )
  • Un editor di testo (Vim, Nano, TextEdit)
  • Tanta, tanta pazienza (opzionale)

Introduzione

Bash è una shell di comando, ovvero un programma che interpreta i comandi che digiti e li esegue.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Offre molte funzionalità avanzate, come la possibilità di scrivere script, di creare alias e di automatizzare le operazioni.

Comandi di base

Iniziamo con le basi, proviamo ad eseguire un comando.
Apri il terminale e digita:

echo "Ciao Mondo!"

Questo comando stamperà "Ciao Mondo!" a schermo. echo è un comando che semplicemente stampa il testo che gli viene passato come argomento.

📚 Argomento

Un argomento è un valore che viene passato a un comando o a un programma. Ad esempio, in echo "Ciao Mondo!", "Ciao Mondo!" è l'argomento passato al comando echo.

Redirezione dell'output

Uno dei concetti fondamentali di Bash è la redirezione dell'output. Puoi utilizzare i seguenti operatori per redirigere l'output di un comando:

  • > - Reindirizza l'output in un file, sovrascrivendo il contenuto esistente
  • >> - Reindirizza l'output in un file, aggiungendo al contenuto esistente
  • | - Pipe, reindirizza l'output di un comando come input di un altro comando

Esempio:

echo "Questo è un esempio" > file.txt # Scrive "Questo è un esempio" in file.txt
echo "Altra riga" >> file.txt # Aggiunge "Altra riga" in file.txt
cat file.txt | grep "esempio" # Stampa le righe di file.txt che contengono "esempio"

Variabili

In Bash, puoi definire e utilizzare variabili. Ecco alcuni esempi:

nome="Mario" # Assegnazione di un valore a una variabile
echo "Ciao $nome" # Stampa "Ciao Mario"

Per accedere al valore di una variabile, basta anteporre il carattere $ al suo nome.

Variabili di ambiente

Le variabili di ambiente sono un tipo speciale di variabili che memorizzano informazioni sull'ambiente di sistema. Alcune variabili di ambiente comuni sono:

  • $HOME - Il percorso della directory home dell'utente
  • $PATH - Un elenco di directory in cui il sistema cerca i comandi eseguibili
  • $PWD - Il percorso della directory corrente

Puoi visualizzare tutte le variabili di ambiente con il comando env o printenv.

Comandi comuni

Ecco alcuni comandi Bash comuni che vale la pena conoscere:

  • ls - Elenca i file e le directory (Sintassi: ls [opzioni] [directory])
  • cd - Cambia directory (Sintassi: cd [directory])
  • mkdir - Crea una nuova directory (Sintassi: mkdir [directory])
  • rm - Rimuove file o directory (Sintassi: rm [opzioni] [file/directory])
  • cp - Copia file o directory (Sintassi: cp [opzioni] [origine] [destinazione])
  • mv - Sposta o rinomina file o directory (Sintassi: mv [opzioni] [origine] [destinazione])
  • cat - Visualizza il contenuto di un file (Sintassi: cat [file])
  • grep - Cerca un pattern in uno o più file (Sintassi: grep [opzioni] [pattern] [file])
  • find - Cerca file in una directory (Sintassi: find [directory] [opzioni])

Questi sono solo alcuni dei comandi più comuni. Ce ne sono molti altri, quindi ti consiglio di esplorare ulteriormente per scoprire cosa puoi fare con Bash!

Se hai dubbi, utilizza il comando man seguito dal nome del comando per visualizzare il manuale del comando. Ad esempio, man ls ti mostrerà il manuale del comando ls!

Script Bash

Gli script Bash sono semplicemente file di testo contenenti una sequenza di comandi Bash. Possono essere eseguiti dal terminale e sono molto utili per automatizzare attività ripetitive.

Per creare uno script, apri un editor di testo e digita i comandi desiderati, uno per riga. Salva il file con un'estensione .sh. Quindi, apri il terminale, naviga nella directory in cui si trova il file e digita:

chmod +x nome_script.sh # Rende lo script eseguibile
./nome_script.sh # Esegue lo script

Esempio di script

Ecco un semplice script che chiede all'utente il suo nome e lo saluta:

#!/bin/bash

echo "Qual è il tuo nome?"
read nome

echo "Ciao $nome, benvenuto!"

Salva questo script come saluto.sh, rendi l'eseguibile con chmod +x saluto.sh e poi eseguilo con ./saluto.sh.

All'interno degli script, puoi anche utilizzare costrutti di controllo come if, for e while, nonché funzioni per organizzare meglio il codice.

Istruzioni condizionali

Le istruzioni condizionali if ti permettono di eseguire codice solo se una certa condizione è vera. Ecco un esempio:

età=25

if [ $età -lt 18 ]; then
    echo "Non sei ancora maggiorenne."
elif [ $età -ge 18 ] && [ $età -lt 65 ]; then
    echo "Sei un adulto."
else
    echo "Sei un pensionato."
fi

In questo esempio, l'istruzione if controlla l'età e stampa un messaggio appropriato. Gli operatori di confronto utilizzati sono -lt (minore di), -ge (maggiore o uguale a) e -lt (minore di).

Cicli

I cicli for e while ti permettono di iterare su una serie di valori o di eseguire un blocco di codice finché una certa condizione è vera.

# Ciclo for
for i in 1 2 3 4 5
do
    echo "Valore di i: $i"
done

# Ciclo while 
count=1
while [ $count -le 5 ]
do
    echo "Conteggio: $count"
    ((count++))
done

Funzioni

Le funzioni ti permettono di raggruppare comandi e riutilizzarli facilmente negli script.

# Definizione di una funzione
saluta() {
    echo "Ciao $1, benvenuto!"
}

# Chiamata della funzione
saluta Mario # "Ciao Mario, benvenuto"
saluta Luigi # "Ciao Luigi, benvenuto"

Operatori di confronto

Negli script Bash, puoi utilizzare diversi operatori di confronto nelle istruzioni condizionali e nei cicli:

  • -eq (uguale a)
  • -ne (diverso da)
  • -gt (maggiore di)
  • -ge (maggiore o uguale a)
  • -lt (minore di)
  • -le (minore o uguale a)

Gestione degli errori

La gestione degli errori è importante per scrivere script robusti. Puoi catturare e gestire i codici di uscita dei comandi e utilizzare le istruzioni set -e e set -o pipefail.

# Termina lo script se un comando restituisce un codice di errore diverso da 0
set -e

# Termina lo script se un comando in una pipeline restituisce un codice di errore diverso da 0
set -o pipefail

# Esempio di gestione degli errori
mkdir dir || echo "Impossibile creare la directory"

Espansioni e sostituzioni

Bash offre diverse forme di espansione e sostituzione che ti permettono di manipolare e utilizzare in modo flessibile le variabili, le stringhe e i comandi.

  • Espansione delle variabili: echo $VAR
  • Espansione delle stringhe: echo "La data è ${TODAY}"
  • Sostituzione dei comandi: TODAY=$(date +%Y-%m-%d)

Suggerimenti e best practice

  • Usa nomi descrittivi per le variabili e le funzioni.
  • Commenta il tuo codice per renderlo più leggibile. (specialmente se lavori in team!)
  • Utilizza gli strumenti di controllo della versione per tenere traccia delle modifiche ai tuoi script. (git 💜)
  • Segui le linee guida di stile e le best practice comunemente accettate per la scrittura di script Bash.

Risorse aggiuntive

Conclusione

Bash è uno strumento essenziale per qualsiasi utente di Unix/Linux. Conoscere i comandi di base e le funzionalità di Bash ti aiuterà a lavorare più efficientemente e a sfruttare appieno il potenziale del tuo sistema operativo.

Se questa guida ti è stata utile, ti invito a condividerla con i tuoi amici.

E se hai domande o suggerimenti, non esitare a contattarmi!

Buon divertimento con Bash! 🎉