GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Scripting Tutorial per principianti

Se stai iniziando con i sistemi Linux, termini come "Scripting della shell" o "Scripting Bash ” può essere abbastanza comune – Ma cosa significano? Prima di entrare nei dettagli, l'apprendimento dello scripting Bash può aiutarti a risparmiare tempo nell'esecuzione e nell'esecuzione di varie attività di sistema, a comprendere meglio la riga di comando di Linux (Terminale) e ad automatizzare più attività di sistema.

Cos'è Bash?

Bash, acronimo di "Bourne-Again-Shell" è una shell Unix o un interprete del linguaggio dei comandi per il sistema operativo GNU. È stata la shell principale per le distribuzioni Linux e le versioni di macOS di Apple prima di macOS Catalina. Bash è disponibile anche per Windows 10 tramite il sottosistema Windows per Linux.

Bash in genere viene eseguito in una finestra di testo comunemente nota come Terminale, in cui gli utenti digitano i comandi per eseguire varie attività. Bash può anche eseguire comandi scritti in un file, un metodo denominato "bash scripting".

Differenza tra script Bash e script Shell

Lo scripting della shell e lo scripting Bash non sono la stessa cosa. Con lo scripting Bash, stai usando esplicitamente la shell bash. D'altra parte, scripting della shell può essere una parola piuttosto generica poiché abbiamo altre shell disponibili oltre a Bash. Alcuni dei più comuni includono Korn (ksh), shell C (csh), shell Z (zsh) e shell Bash (sh). Tuttavia, non sarebbe una sorpresa trovare persone che usano bash scripting e shell scripting in modo intercambiabile per significare la stessa cosa. Il nostro post sulle 6 migliori shell open source per Linux fornisce una descrizione dettagliata di queste shell.

In questo post, esamineremo lo scripting di Bash. Per impostazione predefinita, molte distribuzioni Linux disponibili utilizzano la shell Bash. Dai un'occhiata al nostro post sulle 6 migliori distribuzioni Linux per principianti. Per confermare la shell che stai utilizzando sulla tua attuale distribuzione Linux, esegui il comando sul Terminale.

echo $SHELL

Dall'immagine sopra, puoi vedere che l'interprete predefinito nel mio sistema è bash. Attualmente sto utilizzando Ubuntu 20.04 LTS. Immergiamoci!

Capire gli script di Bash

Gli script Bash sono file di testo contenenti comandi bash che vengono eseguiti per eseguire varie attività. Per scrivere questi script, hai solo bisogno di un semplice editor di testo come gedit, leaf pad, vim, nano e molto altro. Ricordati di salvare i tuoi script con un .sh estensione e come testo normale e non rich text. Uno dei miei editor preferiti che utilizzo per scrivere gli script è il nano editor.

Denominazione, assegnazione di autorizzazioni ed esecuzione di uno script Bash

Come spiegato sopra, assicurati di utilizzare l'estensione .sh per i tuoi script bash. Ad esempio, puoi avere uno script con il nome fosslinux_backup.sh . Tuttavia, sarebbe meglio se fossi cauto nel nominare i tuoi script. Ad esempio, alla maggior parte delle persone piace salvare la maggior parte dei propri script come "test". Sconosciuto ai più, esiste un comando integrato in Unix chiamato test, che controlla i tipi di file e confronta i valori. Puoi utilizzare il comando which per verificare se esiste un programma con lo stesso nome di quello del tuo script per prevenire eventuali conflitti di programma.

which [command]
e.g
which test

Dall'output sopra, possiamo vedere che test è già un comando integrato. Pertanto, per evitare qualsiasi conflitto tra i programmi, non nominerò nessuno dei miei script come "test".

Per rendere lo script eseguibile per ogni utente, utilizzare il comando seguente:

chmod +x [script.sh]

Per rendere eseguibile lo script per l'utente corrente, utilizzare il comando seguente:

chmod u+x [script.sh]

Ora per eseguire lo script, esegui il comando seguente:

./[script_name]

Con il metodo sopra, ti renderai conto che dovrai usare il cd comando per spostarsi nella directory contenente lo script o passare il percorso allo script. Tuttavia, c'è una soluzione a questo. Salva i tuoi script nel bin directory presente nella directory home.

Con gli aggiornamenti recenti, la maggior parte delle distribuzioni non viene fornita con il bin cartella per impostazione predefinita. Pertanto, ti verrà richiesto di crearlo manualmente. Posizionando i tuoi script in questa cartella, puoi eseguire lo script digitandone il nome sul Terminale senza usare il cd e ./ comandi.

Linee guida per gli script di Bash

Prima di scrivere il tuo primo script, ci sono alcune linee guida che devi comprendere quando scrivi gli script.

  • Tutti i tuoi script dovrebbero iniziare con la riga "#!/bin/bash".
  • Inserisci ogni comando su una nuova riga.
  • Ogni commento inizia con un # simbolo.
  • I comandi sono racchiusi tra () parentesi.

Il #!/bin/bash (Hash-Bang Hack) è il percorso della shell che useremo. Se stai usando un'altra shell, dovresti modificare questo percorso. Comprendiamo che tutti i commenti iniziano con # simbolo. Tuttavia, se seguito da un (!) mark in Hash-Bang Hack, lo script è forzato ad essere eseguito con la shell indicata da questa riga. Nel nostro caso, è la shell Bash.

Il tuo primo script Bash

Come la maggior parte dei linguaggi di programmazione, scriveremo uno script che stampa "Hello World" istruzione quando eseguita. Apri il tuo editor di testo preferito e incolla i comandi seguenti. Salva il file di testo come fossHelloWorld.sh o qualsiasi altro nome che non sia un comando integrato.

#!/bin/bash
#This script will print 'Hello World' on the Terminal
echo "Hello World"

Una volta salvato il file, rendilo eseguibile eseguendo il comando seguente:

chmod +x fossHelloWorld.sh

Ora, eseguilo con il comando seguente:

./fossHelloWorld.sh

Lo script sopra ha solo tre righe. Il primo è Hash-Bang Hack, di cui abbiamo discusso sopra, il secondo è un commento e il terzo è il comando che verrà eseguito. Nota, i commenti non vengono mai eseguiti.

Diamo un'occhiata ad altre funzionalità di scripting di bash che puoi utilizzare.

Comando Eco

Il comando Echo viene utilizzato per stampare l'output sulla riga di comando di Linux o sul Terminale. Se sei uno sviluppatore e hai già lavorato con PHP, devi esserti imbattuto anche in questo comando. Scriviamo un piccolo script bash per dimostrare come funziona questo comando.

#!/bin/bash
#Let's print the first line
echo "This is Fosslinux.com - With a new line"
#Let's print the Second statement without a new line
echo -n "This is Fosslinux - No new Line"

Salva il tuo script, assegna le autorizzazioni richieste ed eseguilo.

Per comprendere il codice, il primo comando echo stampa un'istruzione e passa alla riga successiva. Il secondo comando echo ha il -n argomento che impedisce allo script di passare alla riga successiva. Puoi usare molte altre opzioni con il comando Echo, comprese le variabili, come vedremo di seguito.

Variabili

Le variabili sono una parte comune e necessaria di qualsiasi linguaggio di programmazione. Si possono dichiarare variabili Bash in diversi modi. Quando si assegna un valore a qualsiasi variabile, non è necessario utilizzare alcun simbolo. Tuttavia, quando chiami il valore della variabile, dovrai utilizzare il $ segno all'inizio della variabile.

Puoi usare le variabili sul Terminale o come script. Esegui i comandi seguenti sul tuo Terminale.

myWebsite = "Fosslinux.com"
echo $myWebsite

Ora creiamo uno script bash che prende due input dall'utente e li memorizza nelle variabili $x e $y . Lo script verificherà quindi se i due valori sono uguali o meno.

#!/bin/bash
echo "Enter the first number"
read a
echo "Enter the second number"
read b
if [[ $a -eq $b ]]
then
echo "Numbers are equal"
else
echo "Numbers are not equal"
fi

Salva lo script ed eseguilo. Dall'immagine qui sotto, puoi vedere che abbiamo inserito valori diversi e lo script è stato in grado di verificare se sono uguali o meno.

Ora, diamo un'occhiata più da vicino al codice. Le prime due istruzioni echo richiedono all'utente di immettere il primo e il secondo numero. Il read il comando attenderà che l'utente inserisca un numero e lo memorizzi nella variabile specificata. Nel nostro caso, è a e b . Abbiamo quindi un'istruzione if che controlla se i due valori sono uguali o meno.

Dichiarazione condizionale

In qualsiasi linguaggio di programmazione, le istruzioni condizionali controllano il flusso di un programma. Un pezzo di codice verrà eseguito solo quando viene soddisfatta una condizione particolare. Alcune delle affermazioni condizionali più comuni includono "se-allora-altrimenti" e "caso". Di seguito è riportata la sintassi di base dell'istruzione if-then-else.

if [[ condition ]]
then
<execute an instruction>
else
<execute another instruction/command>
fi

Dai un'occhiata allo script seguente, che utilizza l'istruzione condizionale "if-then-else".

#!/bin/bash
echo "Enter Your Age"
read age
if ((age > 18 ))
then
echo "You can go to the party"
else
echo "You are not eligible to go to the party"
fi

Esaminiamo lo script sopra. Abbiamo l'echo dichiarazione che richiede agli utenti di inserire il proprio numero di età. Il read l'istruzione memorizza l'età inserita in una variabile "età". Abbiamo quindi un'istruzione condizionale if-then-else che controlla se l'età è maggiore di 18 anni prima di istruire l'utente.

Cicli

I loop sono comunemente usati quando si desidera eseguire più volte un pezzo di codice. Ad esempio, se volessi fare eco a 1000 righe dell'affermazione "Benvenuto in Fosslinux", avrei bisogno di 1000 istruzioni echo. Tuttavia, con i loop, tutto ciò che devo fare è specificare il numero di volte in cui voglio che l'istruzione venga ripetuta o stampata sul Terminale. Bash supporta tre tipi di loop; For Loop, While Loop e Until Loop. Diamo un'occhiata a ciascuno di essi.

  • Il ciclo For

Un ciclo For viene utilizzato per scorrere un elenco di dati specificati o un array. Di seguito è riportata la sintassi di base di Bash For Loop;

for Value in 1 2 3 4 5 .. N
do
instruction1
instruction2
instruction-N
done

o,

for VALUE in file1 file2 file3
do
instruction1 on $VALUE
instruction2
instruction-N
done

Dai un'occhiata allo script qui sotto. Scorre i giorni della settimana indicati e li stampa sul Terminal riga per riga.

#Read a weekday name in each iteration of the loop
for day in Monday Tuesday Wednesday Thursday Friday Saturday Sunday
do
echo "$day"
done

Salviamo lo script come ForLoop.sh ed eseguilo. Di seguito è riportato uno screenshot dell'output.

Questo è solo un semplice esempio di cosa puoi fare con For Loop. Puoi anche combinarlo con istruzioni condizionali per completare un'attività particolare.

  • Il ciclo While

Il ciclo While esegue un'attività specifica mentre una condizione particolare rimane True. In ogni iterazione, il ciclo verificherà prima la condizione prima di eseguire le istruzioni. Quando la condizione è False, il ciclo terminerà. La sintassi di base del ciclo While bash è la seguente:

while [CONDITION]
do
[COMMANDS]
done

Ad esempio, possiamo avere uno script che stamperà la dichiarazione "Benvenuto in FOSSLINUX.COM" 20 volte fino a quando una variabile X è impostata su 20. Proviamo a implementarlo praticamente. Dai un'occhiata allo script qui sotto.

#!/bin/bash
x=1
while [ $x -le 20 ]
do
echo "Welcome to FOSSLINUX.COM"
x=$(( $x + 1 ))
done

Salviamo lo script come WhileLoop.sh ed eseguilo. Di seguito è riportato uno screenshot dell'output.

Diamo un'occhiata allo script While Loop sopra. Per prima cosa dichiariamo una variabile X assegnandole il valore 1. Creiamo quindi un'istruzione While che restituisce l'istruzione "Benvenuto in FOSSLINUX.COM" mentre X è inferiore a 20. Infine, incrementiamo X di uno dopo ogni iterazione.

  • Il ciclo fino a

I cicli Bash Until vengono utilizzati per eseguire una serie di istruzioni o comandi purché la condizione impostata risulti falsa. Di seguito è riportata la sintassi di base di Until Loop.

until [CONDITION]
do
[INSTARUCTIONS/COMMANDS]
done

Simile al ciclo While, il ciclo Until valuta prima la condizione impostata prima di eseguire le istruzioni o i comandi. Se la condizione restituisce false, le istruzioni vengono eseguite. Il ciclo viene terminato quando la condizione restituisce true. Dai un'occhiata all'esempio qui sotto.

#!/bin/bash
count=0
until [ $count -gt 5 ]
do
echo Counter: $count
((count++))
done

Dopo aver salvato ed eseguito lo script sopra, otteniamo l'output di seguito:

Gli script precedenti creano prima un conteggio variabile e lo impostano su zero(0). Questa è la condizione che controlla il flusso del nostro programma. Il ciclo Until verifica se il valore di conteggio è maggiore di 5. In caso contrario, stamperà le istruzioni passate. Tuttavia, se il valore è maggiore di 5, il ciclo terminerà immediatamente. Infine, incrementiamo il valore di conteggio di 1 (count++).

Funzioni Bash

Nella programmazione e nello scripting, le funzioni vengono utilizzate per contenere un pezzo di codice riutilizzabile necessario per eseguire un'attività particolare. Pertanto, se si dispone di comandi simili che si desidera eseguire in parti diverse dello script, non è necessario scrivere ripetutamente questi comandi. Racchiudili in una funzione ed esegui invece la funzione.
Di seguito è riportata la sintassi di base della funzione Bash.

function_name () {
<instructions/commands>
}

o,

function function_name {
<instructions/commands>
}

Creiamo un semplice script che fa uso di funzioni. Per prima cosa creiamo una funzione chiamata "myFunction", che restituisce l'istruzione "Ciao, sono la prima funzione" quando viene chiamata. La seconda funzione, "myCities", è un po' avanzata in quanto accetta gli argomenti passati. Gli argomenti vengono forniti dopo aver chiamato il nome della funzione. Sono accessibili nella funzione come $1.

#!/bin/bash
myFunction () {
echo "Hello I am the first function"
echo "Hello I am the first function"
echo
}

echo "This is the second function"
function myCities () {
echo Hello $1
}
myFunction
myCities Washington,D.C
myCities Phoenix

Dopo aver salvato ed eseguito lo script, otteniamo l'output di seguito.

Menu Bash

Quando si scrive uno script per eseguire un'attività avanzata, potrebbe essere necessario che l'utente selezioni una singola opzione tra diverse opzioni visualizzate sul Terminale. Per ottenere ciò, utilizzeremo bash select comando.

Crea un semplice script di menu che richiederà agli utenti di selezionare le loro distribuzioni Linux preferite da un elenco. Dai un'occhiata allo script qui sotto.

#!/bin/bash

#Print message for the user
echo "Select your favorite Linux Distribution"
select distro in Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali
do
#Print the selected value
if [[ $distro == "Exit" ]]
then
exit 0
else
echo "Selected Linux distribution is $distro"
fi
done

Salviamo lo script come menu.sh ed eseguiamolo. Otteniamo l'output di seguito.

Nello script sopra, abbiamo un elenco di sette distribuzioni Linux che l'utente ne selezionerà. Dopo aver effettuato una selezione, questa viene memorizzata nella variabile distro e successivamente stampato concatenandolo con la stringa "Selected Linux Distribution is." I menu di selezione di Bash possono essere molto utili, specialmente quando hai più script che eseguono attività diverse e uno deve selezionare quello che desidera eseguire.

Aritmetica

Ogni linguaggio di programmazione supporta l'esecuzione di operazioni aritmetiche e lo scripting bash non fa eccezione. Tuttavia, il modo in cui eseguiamo le operazioni aritmetiche è leggermente diverso. Di seguito è riportato uno dei modi in cui è possibile eseguire operazioni aritmetiche in bash. Esamineremo quattro tipi di operazioni aritmetiche:somma, divisione e moltiplicazione.

#!/bin/bash
# Calculate the sum
result=$((70+15))
# Print sum value
echo "sum = $result"

# Calculate the division
result=$((100/25))
# Print division value
echo "division = $result"

#Calculate Multiplication
result=$((15*15))
echo "Multiplication = $result"

Salviamo lo script sopra come arithmetic.sh ed eseguiamolo. Otteniamo l'output di seguito.

Conclusione

Questa è una guida completa per principianti per iniziare con lo scripting Bash. Tuttavia, c'è di più in Bash oltre a ciò che è trattato in questo tutorial. Uno dei posti che consiglierei per migliorare le tue abilità è il Bash Reference Manual di GNU. In caso di problemi o commenti su questo post, non esitare a selezionare i commenti qui sotto.


Linux
  1. Bash Scripting Tutorial per principianti:cos'è, come scriverne uno ed esempi di script

  2. Tutorial sul comando cd di Linux per principianti (8 esempi)

  3. Tutorial comando Linux comm per principianti (5 esempi)

  4. Linux df Command Tutorial per principianti (8 esempi)

  5. Tutorial sul comando della data di Linux per principianti (8 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)

Bash Heredoc Tutorial per principianti

Script di shell per principianti - Come scrivere script Bash in Linux