Linux & Systèmes PDF Gratuit

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 $DISPLAY et $TERM, écriture de wrappers robustes qui vérifient la présence des exécutables (via command -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 --stdout ou redirections vers fichier temporaire. Traitement fiable des codes retour (0, 1, 255) avec test, case et enchaînements && / ||.
  • Techniques sûres pour fichiers temporaires et trap — création et suppression sécurisée avec mktemp et trap "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, awk et sed (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 $DISPLAY pour la présence d'un serveur X11 et vérifier $TERM si nécessaire. Valider l'existence des exécutables avec command -v Xdialog ou command -v dialog avant d'exécuter la commande choisie.
Comment récupérer la saisie d'une boîte Xdialog sans interaction native ?
Utiliser --stdout ou 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 via trap pour 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.