J'ai tout un tas de commandes avec alias dans .bash_aliases
Les exemples les plus génériques sont
alias apt-update="Sudo apt-get update"
alias apt-upgrade="Sudo apt-get dist-upgrade"
mais alors j'ai aussi
alias apt-install="Sudo apt-get install "
alias a2avail="/etc/Apache2/sites-available"
Les deux premiers ne sont pas un problème, les deux derniers je veux rendre le plus puissant;
Spécifiquement pour apt-install
je veux que la complétion automatique fonctionne.
pour a2avail, je veux pouvoir taper quelque chose comme Sudo cp a2avail/default a2avail/new
et le faire exécuter en tant que Sudo cp /etc/Apache2/sites-available/default /etc/Apache2/sites-available/new
l'une ou l'autre de ces deux choses est-elle possible?
Ajouter ce qui suit à votre ~/.bashrc
devrait compléter les noms de paquet pour votre alias apt-install
_apt_install_complete() {
mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "$2");
}
complete -F _apt_install_complete apt-install
Comme pour a2avail, un alias ne fonctionnera que comme le premier mot d'une commande, mais vous pouvez utiliser une variable.
a2avail=/etc/Apache2/sites-available # in ~/.bashrc
# then...
Sudo cp "$a2avail"/{default,new}
À partir du 4 juillet 2017:
Installez alias complet .
Ajoutez cette ligne: complete -F _complete_alias apt-install
.
Vous avez terminé.