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/.

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)

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

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

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

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.

  • technique/old/password_store/completion.txt
  • de qduchemi