Cos’è uno script Bash e come scriverlo in Linux
Supponiamo di avere una serie di comandi Linux, che è necessario ripetere più volte. Puoi scrivere i comandi 1.000 volte e maledire il tuo destino, oppure puoi scrivere un piccolo e semplice script bash in Linux per automatizzare questo noioso compito. In questo articolo discuteremo cos’è uno script bash, i suoi vantaggi e come scrivere uno script bash in Linux.
Cos’è Bash Script in Linux
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.
Vantaggi dell’utilizzo degli script Bash in Linux
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:
- Automazione: Questo è forse il vantaggio più ricercato dell’utilizzo degli script bash. Con gli script bash, hai il potere di automatizzare anche le attività più noiose e ripetitive, riducendo così lo sforzo, risparmiando tempo e minimizzando gli errori.
- Flessibilità: puoi creare script bash personalizzati in base alle tue esigenze. Puoi anche integrare applicazioni e script esterni per rendere il tuo flusso di lavoro ancora più snello.
- Portabilità: Una volta creato uno script bash per eseguire un’attività particolare, questo script bash può funzionare in qualsiasi distribuzione Linux, a condizione che le dipendenze richieste siano installate su quel sistema. Puoi anche utilizzare gli script bash su altri sistemi simili a Unix come macOS e persino su Windows tramite WSL.
- Integrazione: Gli script Bash possono essere integrati con altri strumenti come database, API o anche con altri script Bash che aiutano gli utenti a utilizzare il massimo potenziale degli strumenti di terze parti per attività complesse.
- Facile da scrivere: Gli script Bash sono molto facili da scrivere, grazie alla semplice sintassi con cui gli utenti Linux hanno già familiarità. Non sono necessari strumenti o software speciali per scrivere script bash che consentano la prototipazione rapida di idee e nuovi strumenti.
- Curva di apprendimento bassa: Lo scripting Bash ha una curva di apprendimento relativamente bassa, che lo rende una scelta ideale sia per i principianti che per gli utenti esperti.
Componenti di base dello script Bash in Linux
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:
1. Shebang (#!)
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
3. Variabili
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
4. comando eco
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>
5. If-Else nello script Bash
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
6. Circuiti
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.
Per Ciclo
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:
si riferisce alla variabile temporanea che manterrà ciascun elemento della durante ogni iterazione. Puoi scegliere qualsiasi nome per . contiene gli elementi su cui verrà ripetuto il ciclo for. È possibile specificare una come segue: - Intervallo di numeri: È una sequenza di numeri equidistanti. È possibile generare un intervallo utilizzando la seguente sintassi: “{
.. }”. - Elenco degli articoli: è possibile specificare un elenco esplicito di elementi separati da spazi come
item1 item2 item3
- uscita del comando: Anche l’output di un comando può essere utilizzato come
con la sintassi as $(<command>)
- Intervallo di numeri: È una sequenza di numeri equidistanti. È possibile generare un intervallo utilizzando la seguente sintassi: “{
- Fare indica l’inizio del corpo del ciclo contenente le istruzioni che è necessario eseguire ripetutamente.
- Fatto delimita la fine del ciclo.
Ad esempio, per stampare tutti i numeri interi compresi tra 1 e 5:
for i in {1..5}
do
echo "Number: $i"
done
Mentre Ciclo
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:
si riferisce alla condizione che viene testata prima di ogni iterazione per verificare se è soddisfatta o meno. Una volta che la condizione non è più soddisfatta, il ciclo terminerà senza entrare nel corpo del ciclo. - Fare indica l’inizio del corpo del ciclo contenente le istruzioni che è necessario eseguire ripetutamente.
- Fatto delimita la fine del ciclo.
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
Come scrivere uno script Bash in Linux
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.
Passaggio 1: crea un nuovo file
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
Passaggio 2: Definire la linea Shebang
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.
Passaggio 3: aggiungi i comandi e il codice
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- Se la condizione precedente è soddisfatta, il file corrente viene spostato nella directory TextFiles con
mv "$file" TextFiles/
echo "Moved: $file to TextFiles/"
visualizza un messaggio sulla console che indica che il file è stato spostato nella directory TextFiles
- Se la condizione precedente è soddisfatta, il file corrente viene spostato nella directory TextFiles con
fi
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.- Una volta spostati tutti i file txt, il messaggio finale viene visualizzato sulla console utilizzando
echo "File organization complete!"
Passaggio 4: salva lo script
Una volta finito di lavorare sullo script bash, salva il file ed esci dall’editor.
Passaggio 5: rendere il file eseguibile
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
Passaggio 6: eseguire il file
Dopo aver reso eseguibile lo script bash, esegui il file con la seguente sintassi:
./<filename>
Per eseguire il file test.sh:
./test.sh