Script Bash


script-bash-logo
Uno Script Bash è un file di testo, contenente dei comandi che viene salvato con estensione .sh. Lanciando lo script, i comandi in esso contenuti verranno, automaticamente, eseguiti da Ubuntu. Uno script può essere semplice ma anche molto complesso, dipende da quello che intendiamo realizzare. Vedremo cosa è uno script, come crearlo, modificarlo e lanciarlo ...

Il Terminale

In Ubuntu molte azioni le compiamo tramite finestre grafiche. In effetti per compiere tali azioni possiamo usare anche il Terminale e molti lo preferiscono.


Il
Terminale, chiamato anche console, shell, command line, linea di comando, ecc..., e' un'applicazione che permette di interagire direttamente col Sistema Operativo (Come la finestra DOS di Windows). Si tratta  di uno strumento potente disponibile in Linux (Ubuntu) col quale possiamo fare tantissimo grazie a dei comandi: installare e disinstallare software; creare, spostare o cancellare cartelle e file; manipolare file di configurazione; tantissime altre azioni, dalle più semplici alle più complesse.

Nel Terminale è possibile digitare o incollare una riga di comando per volta, anche se breve e semplice o lunga e complessa.

Lo Script Bash


Se apriamo un editore di testi, ad esempio Gedit (che è il corrispondente del Blocco note di Windows) e vi incolliamo  i comandi utilizzati per il Terminale e poi lo salviamo (dopo avere rispettato delle semplicissime regole), otterremo uno Script che è, quindi, un file contenente dei comandi. Lanciando lo Script verranno eseguiti automaticamente da Ubuntu, tutti i comandi che contiene. In questo modo non avremo più la limitazione del Terminale che imponeva una sola riga di comando per volta. Uno Script può essere semplice ma anche molto complesso, dipende da quello che intendiamo realizzare. Mi limiterò alla realizzazione di semplici Script che possono, comunque compiere importanti e lunghe azioni. 

Creare uno Script Bash


Da Ubuntu apriamo l'editor di testi Gedit (Applicazioni / Accessori / Editor di testi), in esso incolliamo la prima riga:

#!/bin/bash


che è indispensabile in quanto indica al sistema la presenza di istruzioni nel file che vanno elaborate dalla shell  (Terminale).

Seguiranno le righe con tutti i comandi ed in ultimo è opportuno chiudere lo script col comando:

exit

che è la maniera corretta per uscire da uno script.

#!/bin/bash
# Questo script installa le due applicazioni audacity e amule
sudo apt-get install audacity -y
sudo apt-get install amule -y
exit


Ultimata la scrittura ci basta salvare il file con un nome qualsiasi e con l'estensione.sh, ad esempio: installazione.sh

Vediamo cosa abbiamo fatto:

#!/bin/bash


Si tratta della riga di apertura dello Script che è obbligatoria.

# Questo script installa le due applicazioni audacity e amule


Questa è una riga di commento, ossia una spiegazione di quanto farà lo script. Qualunque riga (tranne la prima) se scritta dopo il simbolo # non ha nessuna rilevanza e non costituirà un comando. Possiamo anche non inserire commenti, ma essi servono a meglio capire a cosa serve lo script stesso.

sudo apt-get install audacity -y


Si tratta del comando che installa il software audacity (editore audio). Il comando, dato da terminale, sarebbe:

sudo apt-get install audacity


noi abbiamo aggiunto -y per evitare la conferma. Spieghiamo meglio. Le tre righe che iniziano con sudo apt-get install installano delle applicazioni, se non inseriamo (in coda) -y, per ogni installazione ci verrà chiesta la conferma. Se rispondiamo si (y) l'applicazione verrà installata, altrimenti verrà saltata. Invece, inserendo (in coda)  -y l'applicazione verrà installata senza alcuna conferma. Entrambe le opzioni possono essere utili. Nell'esempio le tre applicazioni verranno installate automaticamente senza la richiesta di nessuna conferma conferma.

Altra cosa da dire è che le righe vuote non vengono considerate dallo script. Esse normalmente si inseriscono, tra una riga di comando e l'altra, solo per facilitare la lettura dello script. Infatti, righe di comando troppo fitte darebbero fastidio nella lettura. Le righe vuote hanno, quindi, il compito di facilitare la comprensione dello script da parte delle persone, come accade per le righe di commento, ma, entrambe, non hanno nessuna importanza ai fini dell'azione dello script.

A questo punto abbiamo lo script completo e salvato con un nome e con l'estensione
.sh (nell'esempio lo abbiamo chiamato installazione.sh), ma per lanciarlo dobbiamo renderlo eseguibile.

Lanciare uno Script Bash

Facendo doppio click sullo script (installazione.sh), lo stesso verrà aperto con Gedit (editore di testi) e ne verrà, semplicemente mostrato il contenuto. Questo in quanto lo script non è stato reso eseguibile. Per renderlo eseguibile, bisogna fate click col destro sullo script (file .sh), quindi scegliete Proprietà. Si apre una finestra (figura sottostante).


script-permessi

Click sulla linguella Permessi (cerchiata in rosso) ed in basso basta inserire una spunta nel quadratino  relativo all'opzione Consentire l'esecuzione del file come programma (numero 1). Terminare con un click su Chiudi (numero 2).

Adesso lo Script è stato reso eseguibile. Se facciamo doppio click sul file
.sh (nell'esempio lo script: installazione.sh), ora si aprirà la finestra sottostante:

script-eseguii

Facendo click sul bottone Esegui nel terminale (numero 1), lo script sarà lanciato ed attuerà tutti i comandi in esso contenuti. Al lancio dello script verrà, automaticamente, aperto il terminale che si chiuderà, sempre automaticamente, alla fine dell'esecuzione dell'ultimo comando.

ATTENZIONE: per Ubuntu bisogna prima effettuare una piccola configurazione a Nautilus

Impostare Nautilus affinché permetta di lanciare uno script da terminale


Impostiamo prima Nautilus in modo che consenta l'esecuzione degli script come programmi. Avviare Nautilus:


pasted-graphic

Si aprirà la finestra del programma:

pasted-graphic-1

Andare a selezionare la voce del menù "Modifica" e dal menù a discesa che ci appare selezionare "Preferenze":

pasted-graphic-2

Si aprirà la seguente finestra:

pasted-graphic-3

Selezionare la voce "Comportamento". Si aprirà la seguente finestra:

pasted-graphic-4

Selezionare la voce "Chiedere ogni volta". La finestra ci apparirà così:

pasted-graphic-5

Selezionare ora il pulsante "Chiudi". Ora possiamo lanciare lo script.

Modificare uno Script Bash


Se dalla figura precedente facciamo click sul bottone Mostra (numero 2), lo script verrà aperto a mezzo dell'editore di testi Gedit. Possiamo quindi modificarlo a nostro piacimento (aggiungere, eliminare righe o quello che vogliamo) ed alla fine fare click sul l'icona Salva, che si trova in alto a sinistra dell'editore di testi (Gedit). In questo modo, otterremo il nuovo script modificato.

Piccoli consigli


  • Una volta lanciato lo script si aprirà il terminale. Se tra i comandi contenuti nello script si trova anche sudo, vi verrà chiesta la password. Il terminale di Ubuntu, per una questione di sicurezza, quando si digita la password, non fa vedere nulla. Questo per evitare che qualcuno che si trova vicino, riesca a capire, se non altro, di quante cifre è composta la password. Quindi quando il terminale richiede la password, anche se sembra che non succede nulla, in effetti sta succedendo tutto. Ossia anche se apparentemente sembra che la password non venga recepita, in effetti Ubuntu la sta prendendo perfettamente. Pertanto dovete solo digitare tutta la password completa, con attenzione (anche se non vedete nulla) e poi dare invio da tastiera. Il terminale accetterà la password, se correttamente digitata e procederà con l'esecuzione dei comandi.

  • Prima di lanciare gli script, è consigliabile chiudere tutte le applicazioni aperte (programmi).

  • Durante l'esecuzione dello script , è consigliabile, non aprire altre applicazioni e non eseguire altri lavori.

  • Durante l'esecuzione dello script potrebbe esservi chiesta una conferma. Rispondete con una s (esse) e date Invio da tastiera.

  • Aspettate pazientemente la fine dell'esecuzione dello script che potrebbe richiedere anche molto tempo, specialmente se si installano applicazioni (numerose e/o grosse). Appena lo script avrà ultimato la sua azione, la finestra del terminale si chiuderà automaticamente.

  • Se uno script creato per installare dei pacchetti (programmi) viene interrotto è possibile lancialo nuovamente. Rilanciando lo script non verranno reinstallati i pacchetti già precedentemente installati, ma solamente quelli che non lo erano stati.

  • Per conoscere il nome esatto di un pacchetto da installare, potete aiutarvi con Synaptic per trovare il nome corretto e completo del pacchetto.