|
|
UN VESTITO PER GLI SCRIPT DI SHELL: DIALOG/XDIALOG
A cura di: Francesco Celebrini
- www.tutorialpc.it
Nota: E' permessa la pubblicazione di questa guida su altri siti lasciando intatto il contenuto, questa nota
e il link al sito
Da alcuni elevato a forma d'arte, da altri considerato un "semplice linguaggio
di scripting", lo scripting 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 primo 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.
Torna al menù principale
Nuova pagina 1
|
|