Proprio come la sceneggiatura di un film dà agli attori un’idea di come recitare una scena particolare. Allo stesso modo, uno script Bash è un file contenente un file serie di comandi Linux che, una volta eseguiti, funzionano come se fossero stati digitati nel prompt della shell, automatizzando così il flusso di lavoro. Tutti gli script bash hanno un’estensione .sh, una “linea shebang” – #/bin/bash
e può essere eseguito direttamente tramite il prompt della shell.
In breve, uno script bash raggruppa tutti i comandi che devi eseguire individualmente per una particolare attività. Ora che sai cos’è uno script bash in Linux, vediamo i suoi vantaggi.
Lo script Bash in generale è uno strumento potente e versatile che lo rende parte integrante dell’arsenale di ogni amministratore di sistema, sviluppatore e utente esperto. Ecco alcuni vantaggi chiave derivanti dall’utilizzo degli script bash:
Se ti guardi intorno, quasi ogni script bash è composto da alcuni componenti comuni ma fondamentali che fungono da elementi costitutivi. Questi blocchi aggiungono una struttura funzionale all’intero script:
Ogni script bash inizia con una “riga Shebang”, che specifica il percorso per l’interprete Linux che verrà utilizzato. È scritto come:
#!/bin/bash
Anche se i commenti vengono semplicemente ignorati dall’interprete quando viene eseguito lo script bash. Vengono semplicemente utilizzati per fornire alcune informazioni aggiuntive sul codice ai suoi utenti. Migliora anche la leggibilità complessiva del codice. Per scrivere un commento in uno script bash, aggiungi semplicemente un octothorpe (#) all’inizio della riga.
Per esempio:
# This is a comment line
Le variabili negli script bash aiutano a memorizzare temporaneamente diversi tipi di dati nella memoria. Per assegnare a una variabile un valore in uno script bash, utilizzare questa sintassi:
<variable_name>=<value_to_store>
Ad esempio, per memorizzare “John” all’interno della variabile “name”:
name="John"
Per accedere al valore memorizzato all’interno della variabile “name”, aggiungi semplicemente un simbolo “$” davanti:
echo "Hello, $name"
Qui, il valore memorizzato all’interno della variabile “name” viene inserito nell’istruzione echo che quindi stampa l’output finale come:
Hello, John
Il comando echo è un comando semplice ma utile che viene utilizzato per stampare valori come output. La sintassi da stampare utilizzando il comando echo è:
echo <value_to_print>
A volte potrebbe essere necessario prendere decisioni situazionali a seconda delle diverse condizioni. In bash puoi prendere decisioni diverse con if
, then
E else
comandi con la seguente sintassi:
if ( condition )
then
# code to be executed if the condition is true
else
# code to be executed if the condition is false
fi
Ecco i diversi set di caratteri che puoi utilizzare in bash per gli script condizionali:
Set di caratteri | Descrizione |
---|---|
&& | AND logico; Utilizzato per confrontare due condizioni e restituisce vero solo se entrambe le condizioni sono soddisfatte |
-eq | Uguale a; Utilizzato per verificare se due valori sono uguali o meno |
-ne | Non uguale a; Controlla se un valore non è uguale a un altro valore |
-lt | Meno di; Utilizzato per verificare se il primo valore è inferiore al secondo valore |
-gt | Più grande di; Controlla se il primo valore è maggiore del secondo valore |
-le | Minore o uguale a; Controlla se il primo valore è inferiore o uguale al secondo valore |
-ge | Maggiore o uguale a; Controlla se il primo valore è maggiore o uguale al secondo valore |
Ad esempio, per verificare se due valori in una variabile sono uguali o meno:
if ( $a -eq $b )
then
echo "Equal"
else
echo "Not Equal"
fi
I cicli vengono utilizzati quando è necessario ripetere una serie di istruzioni o comandi più volte. Nello scripting bash, puoi utilizzare un “For Loop” o un “While Loop” per le tue esigenze di looping.
Un “Ciclo For” è una sorta di struttura in loop che viene utilizzata quando sai esattamente quante volte è necessario ripetere un gruppo di istruzioni o usarlo per scorrere un elenco di cose. La sintassi per utilizzare il ciclo for in uno script bash Linux è:
for <loop_variable> in <sequence>
do
# commands to be executed for each item in the <sequence>
done
Ecco una ripartizione della sintassi di cui sopra:
item1 item2 item3
$(<command>)
Ad esempio, per stampare tutti i numeri interi compresi tra 1 e 5:
for i in {1..5}
do
echo "Number: $i"
done
In generale, i cicli while vengono utilizzati quando non si sa esattamente quante volte è necessario ripetere un particolare insieme di istruzioni. Continueranno a ripetere le affermazioni finché non verrà soddisfatta una particolare condizione stabilita. La sintassi per utilizzare il ciclo while è:
while ( <test_condition> )
do
# commands to be executed while the condition is true
done
Nella sintassi sopra:
Ad esempio, per stampare tutti i numeri interi compresi tra 1 e 5:
i=1
while ( $i -le 5 )
do
echo "$i"
i=$((i + 1))
done
Ora che conosci gli elementi costitutivi di base dello scripting bash in Linux, possiamo passare a come scrivere uno script bash per il tuo sistema Linux.
Puoi creare un nuovo file con uno qualsiasi dei migliori editor di testo disponibili per Linux. Assicurati di fornire l’estensione al file di script come .sh. Ad esempio, per creare il test denominato “test.sh” con l’editor di testo nano.
nano test.sh
Una riga Shebang definisce il percorso dell’interprete che desideri utilizzare per eseguire lo script bash. È la prima riga di ogni script bash ed è scritta comunemente come:
#!/bin/bash
O
#!/bin/sh
Se devi utilizzare qualsiasi altro interprete per il tuo script, utilizza questa sintassi:
#!/usr/bin/env <interpreter>
Nota: Non è obbligatorio aggiungere commenti a ogni script bash che scrivi, ma possono migliorare la leggibilità complessiva del codice. Usa il simbolo dell’ottotorpo per aggiungere commenti al tuo script. Una volta eseguito il file, tutti i commenti vengono ignorati dall’interprete.
Ora puoi iniziare ad aggiungere i comandi e le istruzioni necessari con l’aiuto dei componenti bash, tutti combinati in modo logico. Supponiamo che tu debba automatizzare il processo di spostamento di tutti i file .txt in una directory in una directory separata. Usa questo script bash per spostare tutti i file .txt in una directory separata nel tuo sistema Linux:
#!/bin/bash
# Create a directory to store text files
mkdir -p TextFiles
# Move all .txt files to the TextFiles directory
for file in *.txt
do
if ( -f "$file" ); then
mv "$file" TextFiles/
echo "Moved: $file to TextFiles/"
fi
done
echo "File organization complete!"
Sembra complicato? Suddividiamolo in parti:
#!/bin/bash
è la riga Shebang e specifica che lo script deve essere eseguito con l’interprete bash.# Create a directory to store text files
E # Move all .txt files to the TextFiles directory
sono commenti.mkdir -p TextFiles
crea una nuova directory denominata “TextFile” se non esiste già nella directory corrente.for file in *.txt
esegue l’iterazione su tutti i file .txt con un ciclo fordo
indica l’inizio del cicloif ( -f "$file" ); then
controlla se l’elemento corrente è un file normale o meno
mv "$file" TextFiles/
echo "Moved: $file to TextFiles/"
visualizza un messaggio sulla console che indica che il file è stato spostato nella directory TextFilesfi
indica che il blocco if ha terminato l’esecuzione per l’iterazione corrente.done
indica che il blocco del ciclo for ha terminato l’esecuzione.echo "File organization complete!"
Una volta finito di lavorare sullo script bash, salva il file ed esci dall’editor.
In genere, tutti i file di script non sono eseguibili da tutti i tipi di utenti in Linux. Per rendere eseguibile lo script bash, utilizzare il seguente comando:
chmod +x <filename>
Ad esempio, per rendere eseguibile il file test.sh:
chmod +x test.sh
Dopo aver reso eseguibile lo script bash, esegui il file con la seguente sintassi:
./<filename>
Per eseguire il file test.sh:
./test.sh