educatica!

educación, informática y demás

GNU/Linux bash, Shell scripts

Jugando con zenity

Vamos a crear un script llamado infoUsuario.sh que mostrará en una ventana en módo gráfico la lista de usuarios del sistema. El usuario podrá elegir un usuario de dicha lista para consultar su información. Cuando el usuario elija un usuario de la lista y pulse aceptar, el script mostrará en consola el nombre del usuario, su UId, los grupos a los que pertenece el usuario, su directorio personal y su shell.

Para realizar este script vamos a utilizar la aplicación zenity. Busca información en Internet y en la ayuda de la aplicación para realizar el script.

Manual de GNOME Zenity.

Primeros pasos

Lo primero que vamos a hacer es echar un vistazo al manual de zenity y los ejemplos que vienen en dicho manual para tratar de aprender qué es y cómo funciona.

Vamos a echar un vistazo a la ayuda sobre la opción de listas.

Cuando pulsamos el botón de aceptar, la selección de la lista se muestra en la salida estándar.

Nosotros sabemos aprovechar los datos de la salida estándar, ¿verdad?. Por ejemplo, podríamos guardar esa información en un fichero, podríamos pasarla a través de una tubería a otro comando o podríamos guardarla en una variable.

Sabemos mostrar una lista de datos… y si queremos más columnas.

Vamos a ver qué dato es el que muestra de salida.

La salida de zenity es la primera columna de la fila seleccionada.

Pero… ¿y si queremos tomar los datos de un fichero?, ¿como por ejemplo la lista de usuarios del sistema? Podemos utilizar tuberías.

¿Sabemos mostrar los datos que queremos mostrar en la lista en pantalla?. Si la respuesta es si, entonces sabemos metarla en la lista usando tuberías.

Le hemos pasado a Zenity, a través de una tubería, los elementos de la lista que se mostrará. Si seleccionamos uno de ellos y pulsamos Enter, la salida del comando Zenity será el nombre del usuario.

¿Qué pasa si le damos a cancelar?

Como el resto de comandos y aplicaciones, Zenity devuelve un código de retorno. Si el usuario ha pulsado Aceptar el código de retorno será 0 si pulsa cancelar el código de retorno será 1.

Solución

Vamos a hacer el script con todo lo que sabemos. Haremos una versión preliminar que solo mostrará la lista de usuarios y, comprobando si el usuario ha aceptado o cancelado, mostrará el nombre del usuario elegido en caso de aceptar.

¿y cómo sería la selección múltiple?

Deja un comentario

Tema creado por Anders Norén