Blog de Javier Castañón – JavCastaPosts RSS Comments RSS

Andaba buscando como mejorar la interactividad con el usuario en un script de shell ( .sh ). y encontré algo como:

 xmessage -print -buttons Si:1,No:2,Cancelar:3 -default No -center "Elige Si / No / Cancelar"

xmessage

Pero buscando, descubrí que los chicos de Sun, por el 2.003, creo, ya habían dado con una vistosa solución, que al menos para gnome funciona muy bien.: Zenity  … o como poner esteroides a tus scripts.

Zenity o como poner GUI a un script de shell

Estupendo manual.Por cierto, si no estuviera online, con ejecutar en consola: zenity –about y luego pinchar el botón de ayuda lo tendrías.

Tras leerme el manual. he implementado una prueba de concepto en el siguiente script:

zenity --progress y zenity --calendar


#!/bin/bash
#http://library.gnome.org/users/zenity/stable/zenity-introduction.html.es
# by JavCasta - 2.009 - http://javcasta.wordpress.com

function zcalendar() {

        if zenity --calendar \
        --title="Selecciona una fecha  " \
        --text="Pulsa sobre una fecha para seleccionar esa fecha." \
        --day=11 --month=12 --year=2009 2>&1 > /tmp/fecha.txt
	fecha=$(head /tmp/fecha.txt);
          then zenity --info --text="has seleccionado la fecha $fecha"
          else echo "No has seleccionado ninguna fecha."
        fi
}
function zfile() {

 FILE=`zenity --file-selection --title="Seleccione un archivo"`

        case $? in
                 0)
                        zenity --info --text="has seleccionado el fichero $FILE";;
		#echo "\"$FILE\" seleccionado.";;
                 1)
                        echo "No ha seleccionado ningún archivo.";;
                -1)
                        echo "No ha seleccionado ningún archivo.";;
        esac
}

function zlist() {

	zenity --list \
          --title="Elija la opción deseada" \
          --column="Número" --column="Nombre" --column="Descripción" \
             0001 Alto "Más de 2.00 metros" \
             0002 Medio "Entre 1.60 y 2.00 metros" \
             0003 Bajo "Menos de 1.60 metros" \
		2>&1 > /tmp/eleccion.txt
	eleccion=$(head /tmp/eleccion.txt);
	zenity --info --text="has seleccionado la opcion $eleccion"

}
# ************ Begin P.P. ********************
        (
        echo "10"
        echo "# Veamos el selector de fechas de Zenity: Zenity --Calendar" ; zcalendar
        echo "20" ; sleep 1
        echo "# Veamos el selector de ficheros de zenity: Zenity --file-selection" ; zfile
        echo "50" ; sleep 1
        echo "Esta linea sera ignorada" ; sleep 1
        echo "75" ; sleep 1
        echo "# Veamos el selector de lista de Zenity: zenity --list" ; zlist
        echo "100" ; sleep 1
        ) |
        zenity --progress \
          --title="Script demo de funcionalidades de Zenity" \
          --text="Barra de progreso..." \
          --percentage=0

        if [ "$?" = -1 ] ; then
                zenity --error \
                  --text="Se ha cancelado la demo."
        fi

zenity --info

zenity --file-selection

Y el resultado de la elección de un zenity --list

Tambien hay zenity –question, zenity –entry  con la opcion –hide-text para contraseñas … En resumen una gran ayuda visual (GUI) para los scripts de shell que interactúen con el usuario.

  • Share/Bookmark
Clika en el altavoz para oir el postAltavoz

Necesito trabajo, si tienes una propuesta de trabajo mail-me to: trabajo.job@javcasta.com

Soy técnico de sistemas, comunicaciones y soporte informático. (CV online). Formación

– realizo scripts por encargo. ver CustomScript


Leave a Reply

Los enlaces en los comentarios pueden encontrarse libres de nofollow.

Powered by WP Hashcash

?>