|
|
Katja and Guido Socher <katja(at)linuxfocusorg, %20guido(at)linuxfocus.org> About the authors: Katja è la redattrice per la Germania di LinuxFocus. Ama Tux, i film & photography e adora il mare. La sua pagina personale la trovate qui. Guido è un fan di lunga data di Linux; gli piace Linux perchè è stato creato da gente onesta e disponibile.Questo è uno dei motivi per i quali si parla di opensource. La sua homepage si trova su linuxfocus.org/~guido. Tradotto in Italiano da: Kikko <kikko(at)linuxfocus.org> Contenuto: |
Premessa:
Xdialog e dialog sono due classici strumenti che dotano i vostri script
per la shell di una interfaccia grafica (GUI).
Per comprendere quest'articolo avrete bisogno di qualche nozione basilare di programmazione.
Per iniziare a conoscere i fondamenti della programmazione della shell potreste
leggere il nostro articolo
Shell Programming.
bash
Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\
case $? in
0)
echo "Result: Yes chosen.";;
1)
echo "Result: No chosen.";;
255)
echo "ESC pressed.";;
esac
dialog --help
oppure
Xdialog --help
dialog --yesno "text string" <height> <width>
Una volta digitato "dialog" o "Xdialog" dovrete scrivere il nome del box che avete scelto, più i suoi parametri specifici.#!/bin/sh # #DIALOG=Xdialog DIALOG=dialog # # name of your default isp: defaultisp=maxnet # error() { echo "$1" exit 2 } help() { cat <<HELP pppdialout -- select an ISP and dial out. All available ISPs must have a config file in /etc/ppp/peers pppdialout executes the ppp-on/ppp-off scripts as described in http://linuxfocus.org/English/March2001/article192.shtml pppdialout, copyright gpl, http://linuxfocus.org/English/November2002 HELP exit 0 } # parse command line: while [ -n "$1" ]; do case $1 in -h) help;shift 1;; # function help is called --) shift;break;; # end of options -*) echo "error: no such option $1. -h for help";exit 1;; *) break;; esac done tempfile=/tmp/pppdialout.$$ trap "rm -f $tempfile" 1 2 5 15 # check if we have a ppp network interface if /sbin/ifconfig | grep '^ppp' > /dev/null; then # we are already online $DIALOG --title "go offline" --yesno "Click YES to \ terminate the ppp connection" 0 0 rval="$?" clear if [ "$rval" = "0" ]; then echo "running /etc/ppp/scripts/ppp-off ..." /etc/ppp/scripts/ppp-off fi else # no ppp connection found, go online # get the names of all available ISP by listing /etc/ppp/peers for f in `ls /etc/ppp/peers`; do if [ -f "/etc/ppp/peers/$f" ]; then isplist="$isplist $f ==" fi done [ -z "$isplist" ]&&error "No isp def found in /etc/ppp/peers" # $DIALOG --default-item "$defaultisp" --title "pppdialout" \ --menu "Please select one of\ the following ISPs for dialout" 0 0 0 $isplist 2> $tempfile rval="$?" # return status, isp name will be in $tempfile clear if [ "$rval" = "0" ]; then isp=`cat $tempfile` echo "running /etc/ppp/scripts/ppp-on $isp..." /etc/ppp/scripts/ppp-on "$isp" else echo "Cancel..." fi rm -f $tempfile fi # end of pppdialout
Come funziona lo script:
All'inizio definisce qualche funzione, errori ed help e poi controlla gli argomenti
da linea di comando e viene definito un nome per il file temporaneo (/tmp/pppdialout.$$).
$$ è il nome del processo corrente e consiste in un numero unico per
ogni computer. L'espressione "trap" è eseguita se il programma
viene chiuso in modo anomalo (ad esepio se l'utente clicca ctrl-c) a cancella
il file temporaneo. Dopo controlla se siamo ancora in linea o meno (comando:
/sbin/ifconfig | grep '^ppp'). Se siamo ancora in linea allora apre una yesno-box,
come quella che abbiamo già visto prima, e chiede all'utente se vuol
continuare offline. Se non siamo più online si apre la finestra-menu.
Qui abbiamo la lista di tutti gli ISP disponibili contenuti nel file /etc/ppp/peers
(ls /etc/ppp/peers). La sintassi del menu box è:
dialog --menu "text" <height> <width> <menu height> <tag1> <description> ...
I parametri<height>, <width> e <menu height> vengono nuovamente settati a zero (in modo da avere un dimensionamento automatico) e quindi il programma aspetta che vengano immessi due parametri (<tag1> <description>). Non forniremo una descrizione dettagliata, perciò per qualcuno potrebbero essere discorsi di difficile comprensione. I dati nella variabile isplist dovrebbero risultare qualcosa del genere:isp1 == isp2 == isp3 ==
Il risultato della scelta fatta dall'utente viene stampata da (X)dialog sullo standard error. Il comando di shell "2> $tmpfile" lo scrive nel tmpfile. Il menu box offre anche la possibilità di cancellare. Quindi dobbiamo controllare $? (exit status) per capire quale pulsante è stato premuto.mktgz yourpackage .
Questo comando mostra tutti i file nella directory corrente (".") e potete selezionarna altre da includere nel vostro pacchetto vostropacchetto.tar.gz. Potete scaricare qui (mktgz.txt) mktgz. Non ci addentreremo nelle linee di codice perchè quello che avete letto qui dovrebbe bastarvi per capire da soli il contenuto di questo script.grep -i "somestring" file.txt | sort | uniq | wc -l(per chi non avesse abbastanza esperienza con le shell UNIX: Questo comando conta quante linee del file file.txt contengono il termine "somestring")
|
Webpages maintained by the LinuxFocus Editor team
© Katja and Guido Socher, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2002-12-27, generated by lfparser version 2.29