Outils pour utilisateurs

Outils du site


programable_shell_complete

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
programable_shell_complete [2020/02/27 12:40] – créée bigMaxprogramable_shell_complete [2020/03/30 12:42] (Version actuelle) bigMax
Ligne 1: Ligne 1:
 <markdown> <markdown>
-# Complétion programmable en Shell +# Complétion shell programmable
- +
-Comment réaliser une complétion pour ses petits scripts maison ? +
 ## Documentation ## Documentation
 1. https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html 1. https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html
Ligne 27: Ligne 24:
  
 Dans la fonction, on dispose de 3 variables d'environnement pour implémenter la logique de complétion : Dans la fonction, on dispose de 3 variables d'environnement pour implémenter la logique de complétion :
-- COMP_WORDS : Le tableau contenant la liste des mots déjà complétés et en cours de "tapage"+**COMP_WORDS** : Le tableau contenant la liste des mots déjà complétés et en cours de "tapage"
-- COMP_CWORD : L'index du mot en cours de "tapage" (le dernier index du tableau COMP_WORDS, ce qui en fait le nombre de mot déjà complétés, puisque l'index commence à 0). +**COMP_CWORD** : L'index du mot en cours de "tapage" (le dernier index du tableau COMP_WORDS, ce qui en fait le nombre de mot déjà complétés, puisque l'index commence à 0). 
-- COMPREPLY : Le tableau qui contiendra la liste des mots à proposer à l'utilisateur. Cette variable sera lu par le mécanisme de complétion une fois l'exécution de la fonction terminé.+**COMPREPLY** : Le tableau qui contiendra la liste des mots à proposer à l'utilisateur. Cette variable sera lu par le mécanisme de complétion une fois l'exécution de la fonction terminé.
  
 La fonction est appelée avec ces 3 paramètres : La fonction est appelée avec ces 3 paramètres :
-- $le nom de la commande en cours de complétion +__$1__ le nom de la commande en cours de complétion 
-- $le mot en cours de "tapage" +__$2__ le mot en cours de "tapage" 
-- $le mot précédent le mot en cours de "tapage"+__$3__ le mot précédent le mot en cours de "tapage"
  
 ### Recherche des mots qui match ### Recherche des mots qui match
Ligne 45: Ligne 42:
  
 ## Exemples ## Exemples
 +### Completion simple "à 1 seul niveau"
 +Dans cet exemple, la commande `mon_autre_commande` sera complétée avec les mots "foo bar baz".
 +
 +``` bash
 + complete -W "foo bar baz" -- mon_autre_commande
 +```
 +
 +### Completion plus compliqué "à 2 niveaux"
 +Dans cet exemple, la commande `ma_commande` sera complétée par un premier niveau de mots : "foo bar baz".
 +
 +Puis un second niveau de complétion sera proposé lorsque le premier mot sera complété : la commande `ma_commande bar` sera complété par les mots "-o -i -b toto".
 +
 ``` bash ``` bash
 _ma_commande() { _ma_commande() {
Ligne 59: Ligne 68:
     else     else
         # Le premier mot est déjà écrit         # Le premier mot est déjà écrit
-        local firstWord = "${COMP_WORDS[1]}"+        local firstWord="${COMP_WORDS[1]}"
         case "${COMP_WORDS[1]}" in         case "${COMP_WORDS[1]}" in
-            un) completions="-a -b --test" ;; +            foo) completions="-a -b --test" ;; 
-            deux) completions="--e" ;; +            bar) completions="--i -b toto" ;; 
-            trois) completions="--name" ;; +            baz) completions="--name -a" ;;
-            quattre) completions="-o -i" ;;+
         esac         esac
     fi     fi
Ligne 74: Ligne 82:
 complete -F _ma_commande -- ma_commande complete -F _ma_commande -- ma_commande
  
-complete -W "foo bar baz" -- mon_autre_commande 
 ``` ```
- 
 </markdown> </markdown>
programable_shell_complete.1582807204.txt.gz · Dernière modification : 2020/02/27 12:40 de bigMax