Nous écrivons souvent des scripts bash rapides et à en juger par les commentaires, la moitié d’entre nous utilise bash ou un shell similaire pour afficher des scripts rapides et utiles, et la moitié d’entre nous pense que c’est une abomination, et vous ne devriez utiliser bash que pour votre ligne de commande et votre recours à quelque chose qui ressemble plus à une langue traditionnelle pour faire autre chose. Si vous êtes dans l’ancien camp, vous maudissez probablement votre allégeance lorsque vous avez besoin de rendre vos scripts bash plus interactifs.
La gomme peut aider. C’est un utilitaire qui peut gérer l’entrée et la sortie de votre script avec un peu de flair tout en ne nécessitant presque aucun effort de votre part.
La commande semble simple, mais elle comporte douze sous-commandes, chacune avec une myriade d’options. Mais vous pouvez décomposer les fonctions en quelques catégories simples. Les commandes d’entrée vous permettent de demander une ligne d’entrée ou un groupe de lignes d’entrée. Vous pouvez également créer une liste de sélection ou une invite de type oui/non. Il y a aussi un sélecteur de fichiers et un filtre, un peu comme fzf
.
Les commandes de sortie vous permettent d’afficher le démarquage, le code et les tables. Vous pouvez rendre la sortie agréable avec des bordures et des couleurs. Il y a un téléavertisseur pour les sorties longues et un spinner pour montrer que quelque chose se passe. Vous pouvez également utiliser des chaînes de modèle avec différents espaces réservés.
En pratique
Peut-être que la meilleure façon de voir le genre de choses que la gomme peut faire est de regarder la petite démo animée de la page du projet et de lire le code source associé.
Tout est une sous-commande de l’exécutable principal de la gomme : choisir, confirmer, fichier, filtrer, formater, saisir, joindre, pager, tourner, styler, tabler et écrire. Vous pouvez deviner ce que font la plupart d’entre eux, mais quelques-uns sont moins évidents. Le chewing-gum à lui seul vous donnera un petit rappel :
Commands: choose Choose an option from a list of choices confirm Ask a user to confirm an action file Pick a file from a folder filter Filter items from a list format Format a string using a template input Prompt for some input join Join text vertically or horizontally pager Scroll through a file spin Display spinner while running a command style Apply coloring, borders, spacing to text table Render a table of data write Prompt for long-form text
Vous pouvez obtenir plus d’aide en choisissant une commande et en ajoutant –help. La commande de jointure colle le texte avec l’alignement et fonctionne même si le texte comporte plus d’une ligne. La commande d’écriture accepte les entrées multilignes. L’un des exemples, par exemple, l’utilise pour rassembler un message de validation Git.
Si vous parcourez le script, vous remarquerez peut-être que vous pouvez utiliser des numéros de couleur de style HTML comme :
echo "Do you like $(gum style -- foreground "#04b575" "Bubble Gum?")"
Notez que les zéros non significatifs ne sont pas facultatifs. Pour autant que je sache, cependant, il n’accepte pas les couleurs nommées, ce qui serait pratique. Bien sûr, vous pouvez toujours faire quelque chose comme :
RED="#ff0000" FG=$RED gum style --foreground $FG Alert!
Installer
Selon la page GitHub du projet, de nombreuses distributions connaissent déjà la gomme, vous pouvez donc l’installer à l’aide de votre gestionnaire de packages habituel. J’ai utilisé Neon, j’ai donc dû suivre les instructions de Debian pour l’obtenir, mais ce n’est pas du tout difficile à faire. Vous pouvez également télécharger des fichiers binaires ou des packages prédéfinis. Le programme est écrit en go, donc vous pouvez aussi utiliser go pour l’installer.
Un exemple plus pratique
L’une de mes façons préférées d’apprendre un nouveau langage est d’écrire un programme simple pour que l’ordinateur devine votre numéro dans un jeu haut-bas en utilisant un algorithme de recherche binaire. Si le nombre que vous choisissez est compris entre 1 et 1000, le programme devinera 500. Si vous dites à l’ordinateur que le nombre est trop élevé, il devinera 250 la prochaine fois. Si 500 était trop bas, il devinerait 750. Vous voyez l’idée.
Essaye le. Pour un script shell, c’est raisonnablement attrayant, et je ne suis pas connu pour mes sensibilités en matière de conception esthétique. Je suis sûr que vous pouvez faire mieux, mais le fait est que les outils ont rendu relativement facile la création des invites et la sortie bien formatée. Je n’ai même pas gratté la capacité de gérer le démarquage ou les tables. Vous remarquerez cependant que quelque chose semble s’être cassé récemment avec la coloration syntaxique des fichiers source.
Marcher et mâcher de la gomme
Nous aimons la facilité d’utilisation de la gomme. Nous avons remarqué quelques bizarreries. Le texte en gras ne fonctionnait pas dans Konsole, du moins pas la façon dont le nôtre est configuré, puisque la couleur de premier plan « intense » a été définie pour être la même que la couleur normale. Ce n’est pas vraiment la faute de la gomme, mais cela signifie que vous ne pouvez pas compter sur l’utilisateur pour avoir une configuration qui affichera toutes vos jolies mises en page.
La sous-commande format a un fichier readme dans son sous-répertoire. (C’est d’ailleurs le seul.) Vous y trouverez quelques informations qui pourraient vous aider. Par exemple, le formatage du démarquage, du code et des emojis est en fait effectué par quelque chose appelé Glamour, donc la lecture de sa documentation peut être utile. Chroma gère finalement le formatage du code source. En particulier, jusqu’à ce que nous ayons lu les documents Chroma, nous ne savions pas comment le formatage du code identifiait les langages ou lesquels pouvaient être pris en charge. Lire sur Glamour et Lipgloss aidera également à expliquer les thèmes, l’assemblage et les couleurs. Cela ne fait pas de mal de lire une partie du code go aussi.
Pourtant, avec une courbe d’apprentissage légère, vous pouvez créer ou réadapter des scripts pour qu’ils soient plus conviviaux et attrayants rapidement, même s’ils ne vont pas s’exécuter sous une interface graphique. Dans le répertoire des exemples, vous pouvez même voir comment incorporer de la gomme dans des choses comme Python ou Ruby.
Bien sûr, il existe des outils comme la boîte de dialogue, et pour des scripts plus avancés, vous pourriez en avoir besoin. Mais pour un moment unique qui a juste besoin d’un peu de piquant, pensez à la gomme. Si vous allez écrire du bash sérieux, pensez à certains pièges. Vous pourriez même envisager de passer par la vérification du shell plutôt que par la vérification orthographique.