Je cherche à obtenir la complétion de tabulation sur mes alias de ligne de commande, par exemple, disons que j'ai défini l'alias suivant :
alias apt-inst='sudo aptitude install'
Existe-t-il un moyen d'obtenir les complétions fournies par aptitude lorsque j'appuie sur la touche de tabulation ? c'est-à-dire que lorsque j'écris "sudo aptitude install gnumer" et que j'appuie sur l'onglet, aptitude le complète en gnumeric, ou s'il y avait une incertitude, répertorie tous les packages disponibles commençant par gnumer. Si je le fais en utilisant mon alias, rien - pas d'achèvement.
Réponse acceptée :
Il y a un super sujet à ce sujet sur les forums Ubuntu. Ole J propose la fonction de définition de complétion d'alias suivante :
function make-completion-wrapper () {
local function_name="$2"
local arg_count=$(($#-3))
local comp_function_name="$1"
shift 2
local function="
function $function_name {
((COMP_CWORD+=$arg_count))
COMP_WORDS=( "[email protected]" ${COMP_WORDS[@]:1} )
"$comp_function_name"
return 0
}"
eval "$function"
echo $function_name
echo "$function"
}
Utilisez-le pour définir une fonction de complétion pour votre alias, puis spécifiez cette fonction comme compléteur pour l'alias :
make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst
Je préfère utiliser des alias pour ajouter des arguments toujours utilisés aux programmes existants. Par exemple, avec grep
, je veux toujours ignorer les périphériques et les fichiers binaires, donc je crée un alias pour grep
. Pour ajouter de nouvelles commandes telles que grepbin
, j'utilise un script shell dans mon ~/bin
dossier. Si ce dossier se trouve dans votre chemin, il sera complété automatiquement.