|
Da alcuni elevato a forma d'arte, da altri considerato
un "semplice linguaggio di scripting", loscripting
della shell di Linux rimane comunque, da qualsiasi lato
lo si guardi, uno strumento potente e indispensabile per
l'amministratore di sistema e per l'utente evoluto.
Probabilmente alcuni di voi che lo utilizzano da tempo lo
considereranno un linguaggio completo per le funzioni che
deve svolgere, il che è certamente vero!
Ma potrebbe darsi il caso in cui un'interfaccia grafica,
seppur semplice e minimale, possa agevolare alcune operazioni
(raggruppare alcuni comandi usati di frequente in un menù,
installare un programma con parecchie opzioni di installazione,
ecc..).
In questi casi vi vengono in aiuto DIALOG e XDIALOG, due
strumenti che dotano gli script di una GUI; per la precisione
Dialog è basato sul terminale mentre Xdialog è
un programma per X11.
In sostanza, quello che fanno questi programmi è
visualizzare diversi tipi di caselle di dialogo (casella
di interrogazione con pulsanti di risposta "si"
e "no", lista scorrevole di scelte, caselle di
testo, ecc..).
Questo breve articolo illustrerà solo alcuni esempi
molto semplici.
Del resto se volete approfondire ci sono i siti http://hightek.org/dialog/
(per Dialog) e http://xdialog.dyns.net (per Xdialog) dai
quali potete scaricare i programmi stessi e la documentazione,
c'è il comando dialog+invio da terminale, un discreto
numero di esempi nella directory /usr/share/doc/dialog-0.9b/samples
(almeno per quanto riguarda Red Hat 9) e l'immancabile pagina
man.
Vediamo ora il 1° esempio.
Aprite un file di testo vuoto e inserite il seguente contenuto:
# INIZIO SCRIPT #
#!/bin/bash
dialog --title "titolo" --backtitle "titolo
di fondo" --yesno "Ti piace Dialog?" 0 0;
\
# utilizziamo qui una casella di interrogazione con i pulsanti
di risposta "si" e "no",
# diamo un titolo e un titolo di fondo,
# il doppio zero finale (altezza e larghezza) indica che
la finestra viene
# dimensionata automaticamente (provate a dargli qualche
valore numerico)
case $? in
0) echo "benissimo!" ;;
1) echo "peccato..." ;;
255) echo "uscita con il tasto ESC" ;;
esac
# nel caso in cui si seleziona il pulsante "si"
viene stampato a monitor
# il messaggio "benissimo!"
# nel caso in cui si seleziona il pulsante "no"
viene stampato a monitor
# il messaggio "peccato..."
# nel caso in cui premiamo il tasto ESC viene stampato a
monitor
# il messaggio "uscita con il tasto ESC"
# FINE SCRIPT #
Salvate il file con il nome, ad es., script,
modificate i permessi (es.: chmod 700 script),
lanciatelo (es.: ./script) e vedete i risultati.
Semplice.....ma non molto utile direi.
Ecco allora un altro esempio, con Xdialog questa volta e
quindi utilizzabile da ambiente grafico, che io utilizzo
per avviare la connessione a Internet con il modem ADSL
Speedtouch USB.
Create il file avvia_connessione contenente il seguente
codice:
# INIZIO SCRIPT #
#!/bin/bash
Xdialog --yesno "Vuoi connetterti a internet?"
0 0; \
case $? in
0) modem_run -m -f /usr/share/speedtouch/mgmt.o; pppd call
adsl; ifconfig ppp0;;
1) exit;;
esac
# FINE SCRIPT #
Per disconnettersi create il file ferma_connessione con
il seguente codice:
# INIZIO SCRIPT #
#!/bin/bash
Xdialog --yesno "Vuoi disconnetterti da internet?"
0 0; \
case $? in
0) killall ppp0;;
1) exit;;
esac
# FINE SCRIPT #
E veniamo all'ultimo esempio.
Supponiamo di voler creare un menù che contiene alcuni
comandi e operazioni utilizzati di frequente.
Il contenuto dello script sarà il seguente:
# INIZIO SCRIPT #
#!/bin/bash
dialog --menu "Menù di scelta" 0 0 0 \
# creiamo un menù di scelta
# il triplo 0 finale (altezza, larghezza, altezza menù)
indica che la finestra
# viene dimensionata automaticamente
1 "Backup" \
2 "Avvia ambiente grafico" \
3 "Esci" 2> /tmp/menu.$$
# le opzioni selezionate vengono mostrate come standard
error e redirette nel file
# temporaneo menu.$$ che in seguito viene eliminato
opt=`cat /tmp/menu.$$`
# il simbolo ` si ottiene premendo ALT+96 da tastiera in
codice ascii
rm -rf /tmp/menu.$$
case $opt in
1) tar -cvzf /root/backup.tar.gz /home; read;;
2) startx;;
3) exit;;
esac
# per ogni voce di menù viene eseguito il comando
indicato
# FINE SCRIPT #
A voi approfondire l'argomento.
|