Cours Shell script GUI en PDF (Intermédiaire)
Programmation Shell script GUI — éléments essentiels. Développer des interfaces légères pour scripts shell (bash/sh) permet d'ajouter des boîtes de dialogue et des IHM simples à des outils en ligne de commande, via dialog, Xdialog, Zenity ou gmessage. Le travail repose sur une bonne maîtrise des pipelines, redirections et de la gestion de processus Unix pour construire des workflows d'automatisation fiables. Le PDF gratuit fournit des exemples exécutables, téléchargeables et conçus pour un usage pratique et reproductible.
🎯 Ce que vous allez apprendre
- Maîtriser dialog, Xdialog et Zenity — identification des options principales (
--msgbox,--inputbox,--checklist,--textbox,--logbox,--gauge,--calendar) et différences d'usage entre mode console et X11. Adapter l'affichage (hauteur/largeur, listes, boutons) pour produire des interfaces claires dans des scripts réels. - Détection du terminal et choix de l'IHM — techniques pratiques basées sur
$DISPLAYet$TERM, écriture de wrappers robustes qui vérifient la présence des exécutables (viacommand -v) et gèrent les erreurs si aucun programme d'IHM n'est disponible. - Récupération des données et gestion des codes retour — capture via substitution
$(commande), option--stdoutou redirections vers fichier temporaire. Traitement fiable des codes retour (0, 1, 255) avectest,caseet enchaînements&&/||. - Techniques sûres pour fichiers temporaires et trap — création et suppression sécurisée avec
mktempettrap "rm -f $TMP" EXIT, exemples pour éviter les fuites et garantir la réentrance en environnements multi‑utilisateurs. - Composants avancés et exemples applicatifs — checklist, textbox, logbox, dselect/fselect, boîtes de type wizard et un exemple complet de « kill graphique » listant et précochant des processus. Extraits prêts à l'emploi pour test immédiat.
- Extraction et transformation de flux texte — motifs d'usage de pipelines avec
wget,awketsed(annexe) pour traiter du HTML, extraire des réponses externes et interfacer des services web.
💡 Pourquoi choisir ce cours ?
Rédigé par Thierry Vaira, le document privilégie la pratique : pages courtes, nombreux exemples et scripts commentés exécutables tels quels. Le contenu insiste sur les cas d'usage — gestion d'entrées, enchaînement de boîtes, sécurité des temporaires — et illustre la manipulation des codes retour et des redirections pour une intégration fiable avec des services externes.
👤 À qui s'adresse ce cours ?
- Public cible : administrateurs systèmes, développeurs de scripts d'automatisation et mainteneurs d'outils Linux souhaitant fournir une interface simple aux utilisateurs non techniques ou créer des assistants en ligne de commande.
- Prérequis : bases du shell (bash/sh), familiarité avec la ligne de commande, notions de redirection et variables d'environnement, connaissance des processus et signaux (
kill).
❓ Foire Aux Questions (FAQ)
- Comment détecter si un script doit utiliser Xdialog ou dialog ?
- Contrôler
$DISPLAYpour la présence d'un serveur X11 et vérifier$TERMsi nécessaire. Valider l'existence des exécutables aveccommand -v Xdialogoucommand -v dialogavant d'exécuter la commande choisie. - Comment récupérer la saisie d'une boîte Xdialog sans interaction native ?
- Utiliser
--stdoutou rediriger la sortie vers un fichier temporaire (mktemp) puis lire ce fichier. Gérer les codes retour (0 = OK, 1 = Cancel, 255 = Closed) et nettoyer le fichier viatrappour garantir l'intégrité des données.
Exemple de code : Créer une fenêtre simple
Exemple minimal pour afficher un message depuis un terminal disposant de dialog. Ce bloc montre la syntaxe de base et peut être exécuté tel quel sur un système avec l'utilitaire installé.
dialog --msgbox 'Bonjour' 10 30
Comparatif : dialog vs Xdialog vs Zenity
Les outils apportent une IHM aux scripts, mais leurs usages varient selon l'environnement et le rendu souhaité. dialog s'exécute en mode texte et convient aux environnements sans serveur X. Xdialog propose des boîtes X11 proches des mêmes interfaces texte. Zenity fournit des boîtes GTK+ modernes adaptées aux postes de travail et aux workflows graphiques. Le cours compare exemples, dépendances et limitations pour faciliter le choix.
Tableau comparatif des outils GUI
Vue synthétique pour choisir rapidement l'outil adapté selon l'environnement d'exécution, les dépendances et la complexité d'intégration dans des scripts shell.
| Outil | Environnement (Console / X11) | Dépendances | Complexité |
|---|---|---|---|
| dialog | Console | Libncurses | Faible — syntaxe simple en texte |
| Xdialog | X11 | Bibliothèques X (X11) | Moyenne — similarité avec dialog mais dépendant de X |
| Zenity | X11 / Postes de travail | GTK+ / environnements de bureau | Faible à moyenne — boîtes graphiques natives |
Comparatif technique des outils d'IHM
Le choix technique dépend de la contrainte d'affichage, de la disponibilité des bibliothèques et du niveau d'intégration visuelle souhaité. En environnement serveur ou distant sans affichage graphique, une solution en mode texte reste la plus robuste et accessible. Pour postes de travail, l'usage d'une boîte GTK+ permet d'offrir une expérience plus familière aux utilisateurs finaux.
Processus système et PID — lorsque l'IHM présente une liste de processus (par exemple dans le scénario « kill graphique »), le script doit collecter les PID via ps ou pgrep, conserver les PID/PPID associés et vérifier les droits avant d'envoyer un signal. La présentation via une interface graphique bash facilite la sélection par l'utilisateur, mais le traitement des valeurs sélectionnées — parsing, validation des PID et confirmation — reste la responsabilité du script. Ces étapes sont essentielles pour l'automatisation Linux et pour intégrer des scripts shell interactifs dans des workflows sûrs.
Outils complémentaires
Outre les utilitaires principaux, des outils comme gmessage complètent l'approche GUI pour scripts sur X11. Penser aux contraintes d'accessibilité : prévoir un mode console en secours, vérifier la navigation au clavier et limiter les dépendances pour assurer compatibilité et lisibilité par des lecteurs d'écran. Documenter les prérequis et fournir des wrappers de détection améliore l'inclusion et la robustesse.
Exemple concret : Automatisation système
Scénario « kill graphique » : collecte des processus avec ps -eo pid,ppid,comm, formatage pour une checklist, présentation à l'utilisateur puis confirmation avant d'exécuter kill sur les PID sélectionnés. Le modèle inclut vérification des permissions, confirmation explicite et journalisation des actions pour audit. Convient comme exercice avancé de scripting et d'intégration système. Pour approfondir ces notions, consultez Linux : Maîtriser les Commandes et Appels Systèmes - Cours PDF.