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!
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!
Per scrivere script in Bash, ti servirà
Bash è una shell di comando, ovvero un programma che interpreta i comandi che digiti e li esegue.
Offre molte funzionalità avanzate, come la possibilità di scrivere script, di creare alias e di automatizzare le operazioni.
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.
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
.
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 comandoEsempio:
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"
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.
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 correntePuoi visualizzare tutte le variabili di ambiente con il comando env
o printenv
.
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
!
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
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.
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).
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
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"
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)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"
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.
echo $VAR
echo "La data è ${TODAY}"
TODAY=$(date +%Y-%m-%d)
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! 🎉