Shell è un interprete della riga di comando che consente all'utente di interagire con il sistema. È responsabile della ricezione degli input dall'utente e della visualizzazione dell'output.
Gli script della shell sono una serie di comandi scritti in ordine di esecuzione. Questi script possono contenere funzioni, cicli, comandi, variabili. Gli script consentono agli utenti di salvare facilmente determinate sequenze di codici che potrebbero essere utilizzate più e più volte. Gli script della shell possono anche avere commenti per aumentare la leggibilità.
È necessario salvare uno script di shell con l'estensione .sh .
Per far sapere al sistema Linux che il file è uno script di shell, il file deve iniziare con shebang costruire.
#!/bin/bash OR #!/bin/sh
Successivamente, lo script può contenere comandi, funzioni, loop, controlli condizionali, ecc.
Un buon script contiene sempre commenti che lo rendono leggibile.
Creazione ed esecuzione di uno script di shell di base
Uno script di shell può essere creato usando vi, il comando cat o il normale editor di testo nella GUI.
Creiamo uno script di shell di base usando vi
$ vi basic_script.sh
Questo ti porterà all'editor vi. Aggiungi le seguenti righe:
#!/bin/bash whoami date
Questo semplice script dovrebbe visualizzare l'utente corrente seguito dalla data.
Per salvare e uscire dall'editor vi:
- Premi ESC
- Digita :
- Digita 'wq'
- Premi Invio
Per impostazione predefinita, il creatore dello script non ottiene l'autorizzazione eseguibile per il file.
Per cambiarlo:
$ chmod +x basic_script.sh
Questo ti darà (utente corrente) il permesso di eseguire il file.
Per eseguire lo script:
$ bash basic_script.sh

La prima riga di output corrisponde al comando "whoami" e la seconda riga al comando "date".
Un altro modo per eseguire lo script è :
$ ./basic_script.sh
L'esecuzione del file in questo modo potrebbe richiedere all'utente di concedere prima l'autorizzazione. L'esecuzione con "bash" non richiede l'autorizzazione.

Lo stesso script è in esecuzione con 'bash' prima, ma con problemi di autorizzazione quando si tenta di eseguire direttamente. Il motivo per cui ciò sta accadendo è che il comando bash [nomefile] necessita solo dell'autorizzazione di lettura dal file.
Considerando che il comando ./[filename] esegue il file come eseguibile e quindi richiede l'autorizzazione per l'esecuzione. Questa domanda ha ricevuto una risposta dettagliata su StackExchange.

In generale è meglio fornire il permesso eseguibile.
Utilizzo delle variabili negli script di shell
Gli script possono includere variabili definite dall'utente, infatti poiché gli script diventano voluminosi in termini di dimensioni è essenziale disporre di variabili chiaramente definite. Le variabili di natura autodescrittiva sono un'altra qualità di un buon copione.
Aggiungi le seguenti righe allo script:
#!/bin/bash #This is a comment #defining a variable GREETINGS="Hello! How are you" echo $GREETINGS

SALUTI è la variabile definita e successivamente accessibile utilizzando '$'.
Non dovrebbe esserci spazio nella riga in cui alle variabili viene assegnato un valore.
Eseguiamo lo script:

Lettura dell'input dalla riga di comando
Gli script della shell possono essere resi interattivi con la possibilità di accettare input dalla riga di comando. Il comando di lettura può essere utilizzato per memorizzare l'input della riga di comando in una variabile.
#!/bin/bash #This is a comment #defining a variable echo "What is your name?" #reading input read NAME #defining a variable GREETINGS="Hello! How are you" echo $NAME $GREETINGS
Una variabile NAME è stato utilizzato per accettare l'input dalla riga di comando.
Durante l'esecuzione dello script:

Definizione delle funzioni
Gli utenti possono definire le proprie funzioni in uno script. Queste funzioni possono accettare più argomenti.
Nello script aggiungi :
#!/bin/bash #This is a comment #defining a variable echo "What is the name of the directory you want to create?" #reading input read NAME #defining a variable echo "Creating $NAME ..." mkcd () { mkdir "$NAME" cd "$NAME" } mkcd echo "You are now in $NAME"
Questo script chiederà all'utente un nome di directory. Creerà quindi la directory e cd in essa.

Conclusione
Abbiamo visto come gli script possono essere utilizzati per eseguire comandi in un ordine seriale. Gli script aiutano gli utenti a ridurre la ridondanza e a risparmiare tempo. Gli script possono anche essere condivisi tra utenti diversi.
Gli script che abbiamo visto in questo tutorial erano piuttosto semplici, gli script possono essere progettati anche per eseguire attività complesse. Per ulteriori informazioni sugli script, fare riferimento a questo.