diàleg: Com crear menús en els teus scripts

diàleg, mensajebox, àpex, backtittle, guió, títol, festa, debian, ubuntu

Dialog és una ordre de GNU / Linux que permet crear quadres de diàleg en el terminal perquè els utilitzis en les teves scripts de programació, vaig a mostrar com utilitzar aquesta comanda.

Per a la realització d'aquest article m'he basadoen el manual de la comanda i en les següents pàgines webs donar-los els meus més sincers agraïments als creadors.

http://ovtoaster.com/scripts-en-linux-con-estilo/
http://linuxgazette.net/101/sunil.html

Els colors en aplicacions i sistemes

Textos escrit en la línia d'ordres: blau
Sortida del en la línia d'ordres: verd
Noms d'arxius i contingut d'arxiu: marrons

Instal·lació de dialog

Per poder utilitzar aquesta eina en linux el primer que has de fer és instal·lar-la

Ubuntu

sudo apt-get diàleg d'instal·lació

Debian

apt-get diàleg d'instal·lació

Barret vermell

yum install de diàleg

Suse

Zypper diàleg d'instal·lació

sintaxi

Per caixes amb sols una opció.

tant <ample-de-caixa> <alt-de-caixa> es representa amb valors numèrics si posem 0 s'ajusten al contingut.

diàleg <opcions-comuns> <opcions de caixa> <ample-de-caixa> <alt-de-caixa>

Exemple:

--title de diàleg "Títol"  --yesno "T'agrada el color vermell?" 0 0

Per caixes amb múltiples opcions

És només és per a les caixes de tipus checklist, menú o radiolist. si posem 0 en <nombre-de-opcions-visibles> s'ajusta automàticament al nº d'opcions.

diàleg <opcions-comuns> <opcions de caixa> <ample-de-caixa> <alt-de-caixa> <nombre-de-opcions-visibles>.

Exemple:

--checklist de diàleg "Escull les opcions que desitgis:" 0 0 0  1 formatge on 2 "mostassa" en  3 anxoves off

opcions comuns

Són opcions que són presents a la majoria dels tipus de quadres de diàleg “diàleg” les mes comunes són les següents:

 

títols

diàleg, mensajebox, àpex, backtittle, guió, títol, festa, debian, ubuntu

–títol

S'utilitza per posar-li títol al quadre de diàleg.

–backtitle

És el títol del fons de la finestra.

Canviar text botons

–sí etiqueta

Canvia la paraula YES dels quadres de diàleg per la que tu vulguis.

–D'acord–etiqueta

Canvia la paraula OK dels quadres de diàleg per la que tu vulguis.

–cancel·lar l'etiqueta

Canvia la paraula CANCEL dels quadres de diàleg per la que tu vulguis.

–la sortida d'etiqueta

Canvia la paraula EXIT dels quadres de diàleg per la que tu vulguis.

–de no etiquetat

Canvia la paraula NO dels quadres de diàleg per la que tu vulguis.

–racó

Treu el botó d'OK del quadre de diàleg cal prémer enter per entrar.

Sortida de la comanda

Aquestes variables permeten decidir per on sortiran les opcions escollides en la comanda per defecte sortiran per la sortida d'error si volem podem treure-ho a pantalla.

–stderr

Sortida de la comanda a la sortida d'error si escollim aquesta opció podem treure el resultat a un arxiu afegint al final de la línia de dialog:

2><arxiu on guardar la sortida>

–stdout

Amb aquesta opció ens mostra en pantalla la sortida de l'ordre jo la faig servir quan vull emmagatzemar en una variable la comanda però no vull bolcar a un fitxer temporal, més endavant en els exemples veurem com.

 

Opcions de caixa

Caixa de missatge (–MsgBox)

diàleg, mensajebox, àpex, backtittle, guió, títol, festa, debian, ubuntu

Serveix per posar un missatge en pantalla fins que l'usuari premi enter.

--title de diàleg "títol" --MsgBox "Hola Món" 0 0

Menú SI / NO (–yesno)

diàleg, yesno, guió, festa, debian, ubuntu

Serveix per respondre preguntes amb resposta SI / NO si la resposta és SI retorna 0 si la resposta és NO retorna 1

--title de diàleg "Títol"  --yesno "T'agrada el color vermell?" 0 0

Caixa d'informació (–de Fitxa)

diàleg, de Fitxa, guió, títol, festa, debian, ubuntu

Aquesta caixa mostra en pantalla la informació que nosaltres vulguem és convenient afegir un sleep (comandament que espera x segons per continuar) per a mostrar-la.

--infobox de diàleg "espera 4 segons" 0 0 ; somni 4

Caixa d'entrada (–inputbox)

diàleg, inputbox, guió, títol, festa, debian, ubuntu

S'utilitza per recollir dades.

 --title de diàleg "nom" --inputbox "Posa el teu nom:" 0 0

Caixa de password (–PasswordBox)

diàleg, PasswordBox, guió, festa, debian, ubuntu

És igual que la caixa d'entrada però no es mostren els caràcters que s'escriuen.

 --title de diàleg "clau" --PasswordBox "Posa la contrasenya:" 0 0

Caixa de text (–Caixa de text)

diàleg, tesxtbox, guió, festa, debian, ubuntu, linux, GNU / Linux

La caixa de text és un visor d'arxius i mostra l'arxiu que li indiquem.

--title de diàleg "arxiu fstab" --quadre de text / etc / fstab 0 0

Caixa de menú (–menú)

diàleg, menú, guió, festa, debian, ubuntu, linux, GNU / Linux, caixa de menú

Ens permet escollir una opció entre diverses opcions numerades

--menu de diàleg "La millor truita és:" 0 0 0 1 "amb ceba" 2 "sense ceba" 3 "amb Pebrots" 

Caixa de checklist (–llista de comprovació)

diàleg, llista de comprovació, guió, festa, debian, ubuntu, linux, GNU / Linux

És un menú amb diverses opcions de les que podem escollir diverses. Les opcions que posem en en estaran enceses i les que posem en apagat suprimit.

--checklist de diàleg "Escull les opcions que desitgis:" 0 0 0  1 formatge on 2 "mostassa" en  3 anxoves off

Un esment especial dins checklist per a l'opció –separate-output que ens retorna una línia per cada selecció realitzada molt útil per executar diferents ordres per cada selecció realitzada.

Caixa de radiolist (–radiolist)

diàleg, radiolist, guió, festa, debian, ubuntu, linux, GNU / Linux

És un menú amb diverses opcions de les que podem escollir sols una.

--radiolist de diàleg "Escull el teu truita preferida:" 0 0 0 1 "amb ceba" apagat  2 "sense ceba" en 3 "de pebrots" apagat 4 "de espàrrecs" apagat

Caixa de calendari (–calendari)

diàleg, calendar, calendari, guió, festa, debian, ubuntu, linux, GNU / Linux

És un calendari on podem escollir una data.

--title de diàleg "calendari" --calendari "Tria una fletxa" 0 0

Altres opcions de caixa

A més de les opcions de caixa que hem vist hi ha altres opcions que poden ser interessants d'utilitzar per conèixer-les no dubtis a acudir a l'ajuda.

home de diàleg

Com utilitzar les dades obtingudes amb dialog

Per poder utilitzar en un script les dades recollides pels quadres de diàleg dialog hi ha varaias opcions que jo he trobat, però segur que a vosaltres se us ocorren mes no dubteu en comunicar-me-i les afegiré al post.

Redireccionar la sortida d'dialog a un arxiu.

Podem emmagatzemar la sortida de l'ordre dialog a un arxiu, normalment el posarem a la carpeta / tmp i el esborrarem després d'utilitzar, a continuació us poso un script amb un exemple explicat.

#!/bin/bash
# Per Ignacio Alba Obaya
# https://aplicacionesysistemas.com
# executem el quadre de diàleg posant al final 2>/tmp / nombre.tmp. $$ 
# emmagatzemem en un arxiu el nom introduït.
# recordar que 2> redirecciona la sortida d'error a un fitxer.
--title de diàleg "nom" --inputbox "Posa el teu nom:" 0 0 2>/tmp / nombre.tmp. $$
# esborrem la pantalla
clear
# vam mostrar el nom emmagatzemat
cat /tmp/nombre.tmp.$$
# esborrem l'arxiu amb el nom
rm -f /tmp/nombre.tmp.$$
# fem un salt de línia perquè no se'ns s'amuntegui amb l'avís de sol·licitud
echo -e "\n"

Emmagatzemar la resposta en una variable.

Per emmagatzemar el resultat el realitzarem creant una funció i llamandola des d'una variable.

#!/bin/bash
# Per Ignacio Alba Obaya
# https://aplicacionesysistemas.com
# Emmagatzemar el resultat d'dialog en una variable
# vam crear la funció fundialog
fundialog = ${fundialog = diàleg}
# vam crear una variable data amb la sortida de dialog 
# redireccinando amb --stdout la sortida de dialog 
# a la sortida estàndard, fixa't en que la funció aquesta entre 
# accents dels de les tecles [ si no és així no funciona.
Data = `$ fundialog --stdout --title "calendari" --calendari "Tria una data" 0 0`
# Mostrem la data capturada
echo $ data

Com gestionar sortides de checklist

També hem de poder gestionar múltiples opcions de sortida quat tenim un checklist de tal manera que cada opció desencadeni diferents esdeveniments. Una manea de fer això és la següent:

#!/bin/bash
# Per Ignacio Alba Obaya
# https://aplicacionesysistemas.com

# Creem la varaible funcheck en la qual emmagatzemem la 
# ordre dialog amb l'opció --separate-output
funcheck =(--checklist --separate-sortida de diàleg "Selecciona els grups als quals pertany:" 0 0 0)

# Definim les opcions que apareixeran a la pantalla
# apareixeran encesos els que marquem amb on.
opcions =(1 "opció 1" en 
 2 "opció 2" apagat
 3 "opció 3" apagat
 4 "opció 4" apagat
 5 "opció 5" en
 6 "opció 6" apagat
 7 "opció 7" apagat)

# Creem la funció seleccions que executa funcheck amb opcions 
# i reenvia la sortida al terminal perquè el for següent executi
# les ordres
seleccions = $("${funcheck[@]}" "${opcions[@]}" 2>&1 >/dev / tty)

# netejar la pantalla
clear

# afegim un for perquè executi una ordre en funció de 
# las selecciones realizadas puedes cambiar el echo por 
# cualquier comando o secuencias de comandos
for seleccion in $selecciones
do
 case $seleccion in
 1)
 ressò "Escogiste la opción 1"
 ;;
 2)
 ressò "Escogiste la opción 2"
 ;;
 3)
 ressò "Escogiste la opción 3"
 ;;
 4)
 ressò "Escogiste la opción 4"
 ;;
 5)
 ressò "Escogiste la opción 5"
 ;;
 6)
 ressò "Escogiste la opción 6"
 ;;
 7)
 ressò "Escogiste la opción 7"
 ;;
 esac
done

Conclusiones sobre dialog

En mi opinión dialog es una forma elegante de crear menús para nuestros scripts permite de manera sencilla crear programas para terminal.

Darte las gracias por leer nuestro blog espero que te guste nuestro contenido, te pediria que no olvides dar +1 o compartir en las redes sociales, no ganamos nada con este blog y es para nosotros cada me gusta o mas 1 es una pequeña recompensa 😀


Sobre

Tècnic microinformàtic i formador per a l'ocupació. Amant de les noves tecnologies. Administrador de GNU / Linux i Windows.

6 comentaris:

Deixa un comentari

La seva adreça de correu electrònica no es publicarà. Els camps obligatoris estan marcats *