EDIT: Les solutions proposées dans ce fil de discussion ne sont plus nécessaire
puisque un fichier de complétion existe maintenant dans les versions actuelles de debian
et il est installé par défaut.
Ci-dessous, le contenu du fichier /etc/bash_completion.d/apt qui vous permettra de bénéficier de la complétion pour la commande apt
# Debian apt(8) completion -*- shell-script -*-
_apt()
{
local cur prev words cword
_init_completion || return
local special i
for (( i=0; i < ${#words[@]}-1; i++ )); do
if [[ ${words[i]} == @(list|search|show|update|install|remove|upgrade|full-upgrade|edit-sources) ]]; then
special=${words[i]}
fi
done
if [[ -n $special ]]; then
case $special in
remove|purge)
if [[ -f /etc/debian_version ]]; then
# Debian system
COMPREPLY=( $( \
_xfunc dpkg _comp_dpkg_installed_packages $cur ) )
else
# assume RPM based
_xfunc rpm _rpm_installed_packages
fi
return 0
;;
*)
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
2> /dev/null ) )
return 0
;;
esac
fi
case $prev in
-c|--config-file)
_filedir
return 0
;;
-t|--target-release|--default-release)
COMPREPLY=( $( apt-cache policy | \
command grep "release.o=Debian,a=$cur" | \
sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )
return 0
;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y -u -t -b -c -o
--download-only --fix-broken --help --version --ignore-missing
--fix-missing --no-download --quiet --simulate --just-print
--dry-run --recon --no-act --yes --assume-yes --show-upgraded
--only-source --compile --build --ignore-hold --target-release
--no-upgrade --force-yes --print-uris --purge --reinstall
--list-cleanup --default-release --trivial-only --no-remove
--diff-only --no-install-recommends --tar-only --config-file
--option --auto-remove' -- "$cur" ) )
else
COMPREPLY=( $( compgen -W 'list search show update install
remove upgrade full-upgrade edit-sources dist-upgrade
purge' -- "$cur" ) )
fi
return 0
} &&
complete -F _apt apt
# ex: ts=4 sw=4 et filetype=sh
Ensuite, lancez la ligne de commandes suivante :source /etc/bash_completion
si vous voulez le faire prendre en compte sans avoir besoin de relancer le système.
Au prochains démarrage, il ne sera pas nécessaire d’utiliser cette ligne de commande car elle sera lancée par votre ~/.bashrc ou de façon globale par /etc/bash.bashrc ou /etc/profile
=======
Voir aussi : debian-administration.org : An introduction to bash completion
EDIT : J’ai supprimé des options qui étaient en trop, mais il reste encore des trucs à adapter : Je pense que l’auteur de ce script avait fait une adaptation rapide à partir d’une copie du fichier /usr/share/bash-completion/completions/apt-get