Je cherche à obtenir la complétion par 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 finitions fournies par aptitude lorsque je frappe la touche de tabulation? C'est-à-dire que lorsque j'écris 'sudo aptitude install gnumer' et que je clique sur onglet, aptitude complète ceci en gnumeric, ou s'il y avait une incertitude, liste tous les paquetages disponibles commençant par gnumer. Si je le fais en utilisant mon alias, rien - pas de complétion.
bash
alias
autocomplete
levesque
la source
la source
Réponses:
Il existe un excellent fil à ce sujet sur les forums Ubuntu . Ole J propose la fonction de définition d'achèvement d'alias suivante:
Utilisez-le pour définir une fonction de complétion pour votre alias, puis spécifiez cette fonction en tant que compléteur pour l'alias:
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, alors je crée un alias pourgrep
. Pour ajouter de nouvelles commandes telles quegrepbin
, j'utilise un script shell dans mon~/bin
dossier. Si ce dossier est dans votre chemin, il se complétera automatiquement.la source
complete -o default -F ...
au lieu decomplete -F ...
faire en sorte que des tâches telles que la saisie automatique du nom de fichier fonctionnent correctement lors de la transmission des arguments (Bash 4.3.46).Essayez complete-alias , qui résout ce problème avec précision.
Après l’avoir installé, vous pouvez utiliser une fonction générique pour compléter de nombreux alias comme ceci:
Vous souhaiterez peut-être utiliser le fichier complete_alias dans toutes les instances bash
.bash_profile
ou similaires.installation
application
container
peut maintenant être_docker()
complété automatiquement par le gestionnaire d'achèvement d' origine ;la source
2018 réponse
Vous devez ajouter votre alias au programme 'complete'. Selon le type de complétion automatique que vous souhaitez réaliser, vous devez utiliser -c ou -F.
Pour l'auto-complétion du paquet:
Pour l'auto-complétion de la commande:
Pour vérifier si votre alias a été ajouté correctement:
Enfin, pour supprimer un alias de 'complete':
Dans ton cas:
la source
complete -F xxx
ne fonctionne pas sur OSX (il montre simplement l'utilisationcomplete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]
). Avez-vous un pointeur? Merci.Voici le code de la réponse de Shawn J. Goff avec quelques améliorations:
shell-check
, par exemple, le premier"
de la chaîne de définition de fonction"$@"
réellement terminée .return 0
afin que la valeur de retour de la fonction sous-jacente puisse être renvoyée à l'appelant..
la source
COMP_WORDS
tableau. Si nous utilisonsmake-completion-wrapper _apt_get _apt_get_install apt-get install
comme exemple, aftershift 2
,$@
contientapt-get install
. La définition de la fonction inclutapt-get install
(les deux mots littéraux) lors de l'attributionCOMP_WORDS
.En tant qu'extension de la réponse @Giles, la fonction de confort suivante nomme automatiquement l'enveloppe générée par
make-completion-wrapper
afin de permettre de définir l'achèvement sur une ligne:la source