GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Beginner Series n. 1:crea ed esegui il tuo primo script Bash Shell

Se devi farlo più di una volta, automatizzalo!

Ti ritroverai spesso a ripetere una singola attività su Linux più e più volte. Potrebbe essere un semplice backup di una directory o potrebbe essere la pulizia di file temporanei o persino la clonazione di un database.

L'automazione di un'attività è uno dei tanti scenari utili in cui puoi sfruttare la potenza dello scripting bash.

Lascia che ti mostri come creare un semplice script di shell bash, come eseguire uno script bash e quali sono le cose che devi sapere sullo scripting di shell.

Crea ed esegui il tuo primo script di shell

Per prima cosa creiamo una nuova directory denominata script che ospiterà tutti i nostri script bash.

mkdir scripts
cd scripts

Ora all'interno di questa 'directory degli script', crea un nuovo file chiamato hello.sh usando il comando cat:

cat > hello.sh

Inserisci la seguente riga digitandola nel terminale:

echo 'Hello, World!'

Premi Ctrl+D per salvare il testo nel file e uscire dal comando cat.

Puoi anche utilizzare un editor di testo basato su terminale come Vim, Emacs o Nano. Se stai usando un desktop Linux, puoi anche usare un editor di testo grafico come Gedit per aggiungere il testo a questo file.

Quindi, in pratica stai usando il comando echo per stampare "Hello World". Puoi usare questo comando direttamente nel terminale, ma in questo test eseguirai questo comando tramite uno script di shell.

Ora rendi eseguibile il file hello.sh usando il comando chmod come segue:

chmod u+x hello.sh

E infine, esegui il tuo primo script di shell precedendo hello.sh con la tua shell "bash" desiderata:

bash hello.sh

Vedrai Hello, World! stampato sullo schermo. Probabilmente è stato il programma Hello World più semplice che tu abbia mai scritto, giusto?

Ecco uno screenshot di tutti i passaggi che hai visto sopra:

Converti il ​​tuo script di shell in uno script bash

Confuso? Non essere ancora confuso. Ti spiego le cose.

Bash che è l'abbreviazione di "Bourne-Again shell" è solo un tipo di molte shell disponibili in Linux.

Una shell è un interprete della riga di comando che accetta ed esegue comandi. Se hai mai eseguito un comando Linux prima, allora hai usato la shell. Quando apri un terminale in Linux, stai già eseguendo la shell predefinita del tuo sistema.

Bash è spesso la shell predefinita nella maggior parte delle distribuzioni Linux. Questo è il motivo per cui bash è spesso sinonimo di shell.

Gli script di shell hanno spesso quasi le stesse sintassi, ma a volte differiscono. Ad esempio, l'indice dell'array inizia da 1 in Zsh invece di 0 in bash. Uno script scritto per Zsh shell non funzionerà allo stesso modo in bash se ha array.

Per evitare spiacevoli sorprese, dovresti dire all'interprete che lo script della tua shell è scritto per bash shell. Come si fa a farlo? Tu usi Shebang!

La riga SheBang all'inizio dello script della shell

La riga "#!/bin/bash" è indicata come la riga shebang e in alcune pubblicazioni è indicata come la riga hashbang e questo perché inizia con i due caratteri hash '#' e bang '!'.

#! /bin/bash

echo 'Hello, World!'

Quando includi la riga "#!/bin/bash" nella parte superiore del tuo script, il sistema sa che vuoi usare bash come interprete per il tuo script. Pertanto, ora puoi eseguire lo script hello.sh direttamente senza precederlo con bash.

Aggiunta del tuo script di shell al PATH (in modo che può essere eseguito da qualsiasi directory)

Potresti aver notato che ho usato ./hello.sh per eseguire lo script; riceverai un errore se ometti il ​​./

iniziale
[email protected]:~/scripts$ hello.sh
hello.sh: command not found

Bash pensava che stessi cercando di eseguire un comando chiamato hello.sh. Quando esegui qualsiasi comando sul tuo terminale; la shell cerca quel comando in un insieme di directory che sono memorizzate nella variabile PATH.

Puoi usare echo per visualizzare il contenuto di quella variabile PATH:

echo $PATH
/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Il carattere due punti (:) separa il percorso di ciascuna delle directory che la tua shell scansiona ogni volta che esegui un comando.

I comandi Linux come echo, cat ecc. possono essere eseguiti da qualsiasi luogo perché i loro file eseguibili sono archiviati nelle directory bin. Le directory bin sono incluse nel PATH. Quando esegui un comando, il tuo sistema controlla il PERCORSO per tutte le possibili posizioni che dovrebbe cercare per trovare l'eseguibile per quel comando.

Se vuoi eseguire il tuo script bash da qualsiasi luogo, come se fosse un normale comando Linux, aggiungi la posizione del tuo script di shell alla variabile PATH.

Innanzitutto, ottieni la posizione della directory del tuo script (supponendo che ti trovi nella stessa directory), usa il comando PWD:

pwd

Usa il comando export per aggiungere la directory degli script alla variabile PATH.

export PATH=$PATH:/home/user/scripts
Nota che ho aggiunto la 'directory degli script' alla fine della nostra variabile PATH. In modo che il percorso personalizzato venga cercato dopo le directory standard.

Il momento della verità è qui; esegui hello.sh:

[email protected]:~/scripts$ hello.sh
Hello, World!

Funziona! Questo ci porta alla fine di questo tutorial. Spero che ora tu abbia un'idea di base sullo scripting della shell. Puoi scaricare il PDF di seguito ed esercitarti su ciò che hai imparato con alcune sfide di scripting di esempio. Vengono fornite anche le loro soluzioni nel caso abbiate bisogno di suggerimenti.

Bash Capitolo 1 Domande pratiche Problemi e la loro soluzione per mettere in pratica ciò che hai appena appreso in questo capitolo Bash-Capitolo-1-Domande pratiche-Linux-Handbook.pdf26 KB

Dato che ti ho presentato la variabile PATH, resta sintonizzato per il prossimo tutorial sullo scripting di bash in cui parlerò in dettaglio delle variabili della shell.


Linux
  1. Aggiunta di argomenti e opzioni ai tuoi script Bash

  2. Creare ed eseguire uno script di shell in CentOS 8 - Procedura passo passo per farlo?

  3. Come eseguire uno script di shell su una console Unix o un terminale Mac?

  4. Esecuzione di script di shell in parallelo

  5. Esegui lo script bash come demone

Come eseguire uno script Bash

Bash Beginner Series #2:Comprensione delle variabili nello scripting di Bash Shell

Bash Beginner Series #3:Passare argomenti agli script Bash

Bash Beginner Series #7:Decision Making With If Else e Case Statements

Bash Beginner Series #10:Automazione con Bash

Come creare ed eseguire uno script di shell in Ubuntu 22.04