Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 24 juillet 2016

Définir un valeur par défaut pour la builtin read de Bash

La builtin read de bash permet à l'utilisateur de saisir des informations depuis un script Shell.

Par exemple:

read value

On peut aussi afficher un prompt précisant ce que l'utilisateur doit entrer au clavier:

read -p "Enter the input file path: " file_path

Mais il est souvent également nécessaire de définir une valeur par défaut de telle sorte que si celle-ci convient à l'utilisateur il n'a qu'à appuyer sur Entrée:

read -p "Enter the folder path: " -e -i /tmp folder_path

qui affiche:

Enter the folder path: /tmp

Cela se fait avec le flag -i de la builtin read qui nécessite également le flag -e (pour utiliser l'interface readline).

La documentation complète des builtin de bash se trouve ici: https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html.

On peut aussi consulter le Linux Documentation Project.

samedi 16 janvier 2016

Configurer la librairie readline pour un bash sur mesure

Bash utilise une librairie nommée readline pour parser l'entrée utilisateur.

Cette librairie readline développée par la projet GNU est paramétrable à l'envie via un fichier spécifié par la variable d'environnement INPUTRC. En l'absence de cette variable, c'est le fichier ~/.inputrc qui est lu.

Par exemple, pour supprimer le bip énervant lorsque l'on appuie sur la touche TAB, il suffit d'ajouter dans le fichier ~/.inputrc:

set bell-style none

Si on veut maintenant que la complétion sur les noms de fichiers soit insensible à la casse, il faut ajouter:

set completion-ignore-case on

Si ensuite on souhaite que la complétion fasse plus que proposer les choix possibles mais sélectionne d'emblée la première possibilité et que chaque appui sur TAB prenne en compte le choix possible suivant, il faut utiliser la complétion à la "mode vim":

TAB: menu-complete
set show-all-if-ambiguous on

On peut également changer les valeurs de editingmode et de keymap pour ne plus avoir les raccourcis de emacs par défaut (Ctrl-R, Ctrl-S, Ctrl-A, Ctrl-E ...) mais ceux de vi à la place.

Pour une liste exhaustive des options du fichier de configuration de readline, on pourra consulter la man page correspondante.