Quand j'utilise un programme comme svn
et que je tape dans Gnome Terminal:
svn upd
et Tabcliquez sur son auto-complétée pour:
svn update
Est-il possible de faire quelque chose comme ça dans mon script bash personnalisé?
bash
auto-completion
UAdapter
la source
la source
Réponses:
Vous pouvez utiliser l’ achèvement programmable . Regardez
/etc/bash_completion
et/etc/bash_completion.d/*
pour quelques exemples.la source
/usr/share/bash-completion/completions/<program>
The provided link has that already
- ce pourrait être aujourd'hui, mais pas demain. Ou l'année prochaine. Ou dans une décennie. Quoi que vous suggériez au sujet de la pertinence de la documentation, Stack Overflow décourage les réponses par lien uniquement pour ces raisons.J'ai six mois de retard mais je cherchais la même chose et j'ai trouvé ceci:
Vous devrez créer un nouveau fichier:
Pour une complétion automatique statique (
--help
/--verbose
par exemple), ajoutez ceci:COMP_WORDS
est un tableau contenant tous les mots de la ligne de commande actuelle.COMP_CWORD
est un index du mot contenant la position actuelle du curseur.COMPREPLY
est une variable de tableau à partir de laquelle Bash lit les complétions possibles.Et la
compgen
commande retourne le tableau d'éléments de--help
,--verbose
et--version
correspondant le mot courant"${cur}"
:Source: http://www.debian-administration.org/articles/316
la source
-
et leur indique de ne pas commencer à taper le mot cible, supprimez simplement les lignesif [...] then
etfi
./etc/bash_completion.d/
. Je ne suis venu ici que parce que je voulais poster une réponse quelque part, mais il s'avère que quelqu'un avait trois années d'avance depuis le début :) Exemple clair, concis et complet, merci!Toutes les finitions de bash sont stockées dans
/etc/bash_completion.d/
. Donc, si vous construisez un logiciel avec bash_completion, il serait intéressant de demander à deb / make install de déposer un fichier avec le nom du logiciel dans ce répertoire. Voici un exemple de script d'achèvement de bash pour Rsync:Il serait probablement intéressant d’examiner l’un des fichiers de fin d’essais correspondant à votre programme. Un des exemples les plus simples est le
rrdtool
fichier.la source
source ~/.local/mycrazycompletion
dans~/.bashrc
pkg-c
onfig --variable = completionsdir bash-completion` et ce répertoire correspond aux recommandations de la FAQ de complétion de Bash liée ci-dessus.Voici un tutoriel complet.
Donnons un exemple de script appelé admin.sh sur lequel vous voudriez que la saisie semi-automatique fonctionne.
Notez la liste des options. L'appel d'un script avec cette option affichera toutes les options possibles pour ce script.
Et voici le script de saisie semi-automatique:
Notez que le dernier argument à compléter est le nom du script auquel vous souhaitez ajouter la complétion automatique. Tout ce que vous avez à faire est d’ajouter votre script autocomplete à bashrc as
ou le copier dans /etc/bash.completion.d
la source
prev
variable? Vous ne semblez pas l'utiliser.-o nospace
option?Si tout ce que vous voulez, c'est une auto-complétion basée sur un mot simple (donc aucune complétion de sous-commande ou quoi que ce soit), la
complete
commande a une-W
option qui fait juste la bonne chose.Par exemple, j’ai les lignes suivantes
.bashrc
pour compléter automatiquement un programme appelé jupyter :Maintenant
jupyter <TAB> <TAB>
auto-complète pour moi.Les documents sur gnu.org sont utiles.
Il semble que la
IFS
variable soit correctement définie, mais cela ne m'a posé aucun problème.Pour ajouter l'achèvement du nom de fichier et l'achèvement de BASH par défaut, utilisez l'
-o
option:Pour utiliser cela dans zsh, ajoutez le code suivant avant d'exécuter la
complete
commande dans votre~/.zshrc
:la source
bash jupyter <TAB><TAB>
?