Scripts Linux · 6 min read · Jan 22, 2026

Añadiendo una GUI Simple a los Scripts de Shell de Linux con kdialog

Los scripts de shell son cosas increíblemente útiles. Te permiten hacer algo tan básico como crear un comando fácil para reemplazar uno más difícil con muchas opciones, hasta agrupar muchos comandos complejos para ejecutarlos desde un trabajo cron. Son geniales porque puedes ejecutarlos rápidamente en tu terminal favorita, pero en algunos casos requieren que recuerdes combinaciones específicas de opciones. Si te encuentras en esta situación, puedes agregar algunos diálogos GUI simples para ayudarte a acelerar la tarea en cuestión.

Para hacer uso de este tutorial, necesitarás lo siguiente:

  • Acceso a un shell similar a Unix (esto está escrito teniendo en mente bash).
  • macOS y sistemas operativos *nix (como Linux) deberían venir con esto o uno similar.
  • En Windows, podrías instalar el entorno CygWin, o en versiones recientes de Windows 10 usar el “Subsistema de Windows para Linux”
  • Las bibliotecas base para el entorno de escritorio KDE. No necesitas todo el conjunto, especialmente si ya tienes otro entorno de escritorio instalado.

Instalar kdialog solo debería ser necesario si comenzaste con un entorno de escritorio diferente a KDE, y no tienes otras aplicaciones de KDE en tu máquina. Es parte del paquete kde-baseapps-bin en Ubuntu, lo que significa que se instala por defecto en Kubuntu. En otros derivados, puedes instalarlo con el siguiente comando en la terminal:

Instalando kdialog desde la terminal.

sudo apt-get install kde-baseapps-bin

Esto probablemente resultará en una instalación considerable, ya que se instalarán otras bibliotecas y paquetes de KDE junto con él. Pero bueno, el espacio en disco es barato, ¿verdad?

Dado que los scripts están (en general) destinados a hacer cosas automáticamente, solo necesitaremos mostrar este diálogo en las siguientes situaciones:

  • Si necesitamos capturar algún tipo de entrada del usuario, o;
  • Si queremos mostrar al usuario algún tipo de retroalimentación de manera notable (es decir, no solo algún texto mostrado en la línea de comandos).

Tomemos el ejemplo de usar un comando para [hacer una copia de seguridad de tu sitio Drupal usando drush]. Por supuesto, como eres un emprendedor de Internet en ciernes, no solo tienes un sitio Drupal—¿tienes tres? Preferirías no tener que ejecutar comandos separados cuando quieras hacer una copia de seguridad de todos tus sitios, pero al mismo tiempo no quieres tener que recordar una larga ruta si solo quieres tomar una instantánea de uno. Podemos usar un par de diálogos para ayudarnos:

  • Presentar al usuario una lista de sitios que podemos respaldar, y pedirle que haga una elección, y;
  • Mostrar al usuario un mensaje confirmando el resultado, ya sea un éxito o un fallo.

kDialog funciona llamándolo en la línea de comandos junto con un tipo de diálogo, cualquier parámetro que ese tipo pueda requerir, y cualquier otra opción como un título de diálogo.

Hay una buena variedad de tipos de diálogos para elegir dependiendo de tus necesidades, como sigue:

Tipos de kDialog

Tipo de DiálogoImagen de EjemploDescripción
Cuadros de Mensaje de InformaciónMuestra un cuadro con un botón “OK” para cerrar, proporcionando un mensaje de texto y ya sea un icono de información “no crítica”, advertencia o error.
Pop-up PasivoEsto muestra un mensaje que desaparecerá en unos segundos, es decir, no requiere que el usuario lo cierre o lo desestime.
Cuadro de Mensaje Sí/NoAl igual que los “Cuadros de Mensaje de Información”, esto muestra un diálogo con un icono de información/advertencia/error que también proporcionará la selección del usuario de “Sí” o “No”.
Cuadros de Diálogo de EntradaEsto proporciona un solo cuadro en el que el usuario puede escribir algún texto.
Cuadros de Visualización de ArchivosEsto mostrará el contenido de un archivo (texto plano) dentro de un cuadro de diálogo.
Cuadros de Diálogo de Menú y SelecciónEsto proporciona un diálogo con una lista de elementos, permitiendo al usuario hacer una o más selecciones: - Los Diálogos de Menú y Radiolist permiten la selección de una opción. - El Diálogo de Lista de Comprobación permite la selección de una, múltiples o todas las opciones. - El Diálogo de Combobox permite la selección de una opción usando un menú desplegable.
Cuadros de Diálogo de Selección de ArchivosEl usuario puede seleccionar parte del sistema de archivos, incluyendo: - Seleccionar archivos existentes, con la capacidad de filtrar por nombre o tipo de archivo - Ingresar un nuevo nombre de un nuevo archivo para ser guardado/actualizado - Directorios
Diálogos de ProgresoEl usuario puede combinar kDialog con el comando dcop para crear un diálogo que actualice al usuario sobre el progreso de una operación.

Al revisar las opciones anteriores, dos de ellas destacan como teniendo potencial:

  • El “Diálogo de Lista de Comprobación” nos permitirá seleccionar uno, o todos, de nuestros sitios para respaldar.
  • El “Cuadro de Mensaje de Información” puede ser utilizado para mostrar si cada uno de estos ha tenido éxito o ha fallado.

Dadas estas opciones, podemos imaginar que nuestro script se verá algo así:

SITE1 está ubicado AQUÍ (haz que estas sean rutas completas, no rutas relativas)
SITE2 está ubicado ALLÍ
SITE3 está ubicado EN OTRO LUGAR

display a kDialog con SITE1, SITE2 y SITE3 como opciones
y dime cuál(es) elige el usuario

para cada uno que el usuario eligió:
    ejecutar +drush ard+ en ese sitio, y
    registrar si fue exitoso o no.

display otro +kDialog+ con cada uno de esos resultados.

Con eso en mente, vamos a sumergirnos.

Lo primero que debemos hacer es ensamblar el comando drush que queremos aplicar a cada sitio cuando se seleccione. Supongamos que todos los sitios están en el mismo host web en diferentes directorios, pero queremos almacenar las copias de seguridad en un directorio común “backup”. Podemos usar lo siguiente:

cd SITIO
drush ard --destination=/home/user/backup/SITENAME.tar.gz

Así que usando tu conocimiento sobre la configuración de variables y bucles for, podemos hacer este script de la siguiente manera:

#! /bin/bash

// Nota: crear variables para almacenar rutas a todos los sitios
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'

// Nota: crear variable para almacenar la ruta al destino
DESTINATION='/home/user/backup'

// Nota: mostrar un diálogo pidiendo al usuario que seleccione qué sitios respaldar
CHOICES=$(kdialog --checklist "Seleccionar sitios para respaldar:" 1 "Sitio personal" off 2 "Sitio de negocios" off 3 "Sitio de pasatiempos" off)

// Nota: registrar un mensaje de éxito/fallo para cada una de las opciones devueltas del diálogo
for each in $CHOICES
do
    case {
        1)
            cd $PERSONALSITE
            drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Copia de seguridad del sitio personal: Sucedió\n"
            else
                RESULTS += "Copia de seguridad del sitio personal: Falló\n"
            fi
        2)
            cd $BUSINESSSITE
            drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Copia de seguridad del sitio de negocios: Sucedió\n"
            else
                RESULTS += "Copia de seguridad del sitio de negocios: Falló\n"
            fi
        3)
            cd $HOBBYSITE
            drush ard --destination=$DESTINATION/myhobbysite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Copia de seguridad del sitio de pasatiempos: Sucedió\n"
            else
                RESULTS += "Copia de seguridad del sitio de pasatiempos: Falló\n"
            fi
    esac

// NOTA: mostrar un diálogo con los resultados de todas las operaciones de copia de seguridad.
kdialog --msgbox $RESULTS

Si guardamos esto y hacemos que se ejecute como se describe en el primer artículo de la serie Bash, podremos ejecutar un solo comando, obtener un diálogo fácil de usar para elegir nuestro sitio, y luego ver una bonita ventana informando cómo fue todo.

Si bien este script ciertamente puede ser optimizado de un par de maneras, demuestra cómo puedes usar kdialog para recopilar alguna entrada del usuario y mostrar algunos resultados ejecutando un solo programa dentro de tu script.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.