Avoir l'auto-complétion en ligne de commande
Cette partie détaille comment avoir la complétion en ligne de commande sur votre machine si vous utilisez bash
.
C’est également possible d’avoir la complétion avec zsh
et fish
, mais ce n’est pas détaillé ici.
Les scripts de complétion originaux pour les 3 shells sont disponibles ici.
Pour avoir l’auto-complétion d’une commande en bash
, il faut avoir un fichier de complétion du même nom dans /etc/bash_completion.d/
.
Le cas easy
Prenons l’exemple d’une machine qui a le dépôt pass
de Picasoft dans le $HOME/.picapass
de l’utilisateurice.
Assurez vous d’avoir un alias picapass
en place.
Le script de complétion bash est sur le dépôt.
Copiez le dans votre /etc/bash_completion.d/
:
- snippet.bash
sudo cp $HOME/.picapass/.bash_completion.d/picapass /etc/bash_completion.d/picapass
Normalement, les changements seront effectifs à la prochaine session bash.
Ouvrez un nouveau terminal. (source ~/.bashrc
ne suffit pas)
Utiliser un autre alias
Si vous utilisez un autre alias que picapass
, renommez le fichier :
- snippet.bash
sudo mv /etc/bash_completion.d/picapass /etc/bash_completion.d/<NOUVEL_ALIAS>
Et éditez le fichier de complétion :
- snippet.bash
# dernière ligne complete -o filenames -F _pass picapass # remplacer cette ligne complete -o filenames -F _pass <NOUVEL_ALIAS> # par cette ligne
Supporter un autre dossier
Si votre dossier “picapass” n’est pas $HOME/.picapass
,
éditez le fichier le fichier de complétion :
- snippet.bash
# ligne 8 local prefix="${PASSWORD_STORE_DIR:-$HOME/.picapass/}" # remplacer cette ligne local prefix="${PASSWORD_STORE_DIR:-<VOTRE_DOSSIER_PICAPASS>}" # par cette ligne
Ça ne fonctionne pas ?
C’est sûrement parce qu’il manque ceci dans le ~/.bashrc
:
- snippet.bash
# necessary to use completion if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi
Devenir un·e vrai·e bg
Celleux qui veulent optimiser leur utilisation du pass
peuvent créer un deuxième alias picapas
qui équivaut à pass -c
- snippet.bash
alias picapas="PASSWORD_STORE_DIR=$HOME/.picapass pass -c"
Répétez les mêmes instructions, avec le fichier $HOME/.picapass/.bash_completion.d/picapas
.