MyFPschool

Tu sitio de informática y tecnología

  • Home
  • Noticias
  • Primaria
  • 1_ESO
    • 1_ESO_Matemáticas
  • 2_ESO
    • 2_ESO_FísicaYQuímica
    • 2_ESO_Geografía
    • 2_ESO_Matemáticas
  • 3_ESO
    • 3_ESO_BIOLOGÍA
    • 3_ESO_MATEMATICAS
    • 3_ESO_FISICA_Y_QUIMICA
    • 3_ESO_GEOGRAFÍA_E_HISTORIA
  • 4_ESO
  • PEVAU
    • Historia de España
    • Historia de la filosofía
    • Literatura
    • Química
  • BACHILLERATO
  • Impresión 3D
  • Gadgets, wearables y nuevas tendencias
  • Hardware
    • FH
    • Microprocesadores
    • MME
  • Redes e Internet
  • Sistemas Operativos
    • shell script
    • Conceptos de sistemas operativos
  • Entornos de desarrollo
    • UML
  • Programación web entorno cliente
    • AngularJS
  • iPad
  • Zona Mac
  • Herramientas y programas
  • Libros
  • Diagnóstico, reparación y ampliación de equipos informáticos
  • PDI. Pizarra Digital
  • Cursos Gratis
  • Myfpschool in English
  • Raspberry
  • EOI. Escuela oficial de Idiomas
  • Bases de Datos
  • English in FP
terminal

Zenity. Una forma de mejorar tus shell script.

  • 9 años ago
  • Posted in:shell script, Sistemas Operativos
  • 0
  • Author: jcmoreno
  • Tags: diálogo, modo gráfico, shell script, zenity

Zenity utiliza las librerías GTK+ para crear diálogos en tus shell script. Hasta ahora los shell script que he venido realizando son todos en modo texto y aburridos. Con Zenity se pueden hacer más interactivos y pueden darle un valor añadido.

No obstante, no pienses que con Zenity vas a poder hacer aplicaciones como con Java, Perl o Python. Nada más lejos de la realidad. De todas formas, Zenity puede hacer que tus script sean menos monótonos y más atractivos. Cualquiera que programe shell script le parecerá una herramienta muy útil.

¿Para qué sirve Zenity?
Básicamente para mostrar mensajes al usuario y para recibir información de él.

Empezaremos a ver cómo funciona Zenity:

1. Mostrar información al usuario.

Con Zenity se pueden mostrar varios tipos de mensajes al usuario. Existen cuatro categorías:

  • error
  • information
  • question
  • warning

El tipo de cada uno de estos mensajes es obvio. Empezemos mostrando algunos ejemplos:

$ zenity --error --title="Myfpschool.com" --text "LO SIENTO, TE ACABA DE PETAR EL ORDENADOR"

El comando anterior mostrará por pantalla el siguiente mensaje:

zenity1

Como se puede ver, es sencillo mostrar un mensaje al usuario. En el comando, después de «–title=» colocaremos el título del diálogo y después de «–text» el texto que queremos que aparezca en el diálogo.

Veamos otro ejemplo pero haciendo una pregunta al usuario:

$ zenity --question --title="Myfpschool.com" --text "¿Te parece interesante este artículo?"

zenity2

Como puedes ver, en este caso al ser una pregunta (question), aparece un diálogo que tiene dos opciones si o no. ¿Cómo se controla si el usuario pulsa el botón de si o no? Pues muy fácil. Copia y pega el comando anterior en un terminal y una vez ejecutado el comando teclea lo siguiente:

$ echo $?
0

Al poner echo $? te responderá con un 0 si el usuario pulsó si y 1 si el usuario pulsó no.

Dentro de un script podrías hacer lo siguiente:

#!/bin/sh
zenity --question --title=”Myfpschool.com” --text “¿Te parece interesante este artículo?”
var=$(echo $?)
if [ "$var" -gt 0 ]; then
	echo "el usuario pulsó no"
else
	echo "el usuario pulsó si"
fi
Recuerda:
Para ejecutar un script tienes que copiar el código anterior. Salvarlo con extensión sh (opcional pero preferible). Darle permiso de ejecución (chmod +x script.sh) y por último ejecutarlo (./script.sh).

Como puedes ver, en la variable var guardamos si el usuario pulsa sí o no y de esa manera siempre puede utilizar $var dentro de tu script.

2. Recabar información del usuario.

Bueno, ya sabemos cómo mostrar información al usuario e incluso mostrar un diálogo y controlar la respuesta del mismo. No obstante, muchas veces necesitamos que el usuario nos proporcione información y eso lo haremos con la opción entry de Zenity. La opción

--entry

muestra un campo de texto en el cual el usuario puede incluir información y también puede ir acompañada de las siguientes opciones:

--text=text

Imprescindible desde mi punto de vista: En él se especifica el texto que se muestra en la caja de diálogo.

--entry-text=text

Utilizaremos esta opción si queremos que haya un texto por defecto en el cuadro de texto.

hide-text

Oculta el texto que se escriba en el campo de texto para que no sea visible. Se utiliza cuando el campo de texto utilizado es para una password.

Veamos un ejemplo de uso en un shell script:

#!/bin/sh
respuesta=$(zenity --entry --title="Myfpschool.com" --text="Tu opinión sobre este artículo")
var=$(echo $?)
if [ "$var" -gt 0 ]; then
	echo "el usuario no escribió nada"
else
	echo "el usuario escribió $respuesta"
fi

Este script no solamente controla si se ha escrito algo en el campo de texto sino que además almacena en la variable $respuesta el comentario introducido por el usuario.

Veamos un ejemplo parecido al anterior pero utilizando una password. El script sería el siguiente:

#!/bin/sh
clave=$(zenity --entry --title="Myfpschool.com" --text="Teclea la clave" --entry-text "password" --hide-text)
var=$(echo $?)
if [ "$var" -gt 0 ]; then
	echo "el usuario no escribió nada"
else
	echo "el usuario escribió $clave"
fi

3. Trabajando con ficheros.

Una de las formas más útiles de Zenity es el poder abrir diálogos para seleccionar ficheros. En en siguiente script se explica cómo.

#!/bin/sh
fich=$(zenity --file-selection --title="Selecciona un fichero")
resp=$?
echo $resp
if [ $resp -eq 0 ]; then
                echo "fichero $fich seleccionado."
else
                echo "No seleccionó ningún fichero."
fi

Copia este script a un archivo con extensión sh y ejecútalo. Verás cómo se abre una ventana de diálogo y en caso de seleccionar algún archivo lo muestra por el terminal.

4. Ejercicios.

– Realiza un script que pida al usuario un fichero y una palabra. De que tengas estos dos datos el script tiene que determinar si dicha palabra existe en el fichero o no (utiliza diálogos tipo information/error dependiendo si la palabra existe en el fichero o no.

Related posts:

Crear un disco en la RAM en Ubuntu y otros sistemas Linux
Aprende shell script con ejemplos (IV)
¿Cómo será IOS 8?
Automatización de tareas. Gnome-schedule
¿Cómo se gestiona una CPU o Unidad de Control de Proceso (UCP)?
Aprende shell script con ejemplos (III)

Comparte esto:

  • Facebook
  • Correo electrónico
  • Twitter
  • Imprimir
  • LinkedIn

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Post navigation

← El peligro de las wifis públicas
Aprende shell script con ejemplos (I) →

© Copyright 2014 MyFPschool
Proudly powered by WordPress | Theme: Gridster by ThemeFurnace.
Este sitio web utiliza cookies para mejorar su experiencia. Asumiremos que está de acuerdo con esto, no obstante, puede desactivarlas si lo desea. Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR
MENU
  • Home
  • Noticias
  • Primaria
  • 1_ESO
    • 1_ESO_Matemáticas
  • 2_ESO
    • 2_ESO_FísicaYQuímica
    • 2_ESO_Geografía
    • 2_ESO_Matemáticas
  • 3_ESO
    • 3_ESO_BIOLOGÍA
    • 3_ESO_MATEMATICAS
    • 3_ESO_FISICA_Y_QUIMICA
    • 3_ESO_GEOGRAFÍA_E_HISTORIA
  • 4_ESO
  • PEVAU
    • Historia de España
    • Historia de la filosofía
    • Literatura
    • Química
  • BACHILLERATO
  • Impresión 3D
  • Gadgets, wearables y nuevas tendencias
  • Hardware
    • FH
    • Microprocesadores
    • MME
  • Redes e Internet
  • Sistemas Operativos
    • shell script
    • Conceptos de sistemas operativos
  • Entornos de desarrollo
    • UML
  • Programación web entorno cliente
    • AngularJS
  • iPad
  • Zona Mac
  • Herramientas y programas
  • Libros
  • Diagnóstico, reparación y ampliación de equipos informáticos
  • PDI. Pizarra Digital
  • Cursos Gratis
  • Myfpschool in English
  • Raspberry
  • EOI. Escuela oficial de Idiomas
  • Bases de Datos
  • English in FP