Sto provando a scrivere una piccola applicazione di avvio comandi e vorrei utilizzare i completamenti di schede di bash nel mio sistema di completamento. Sono stato in grado di ottenere un elenco di completamenti per i comandi generali utilizzando compgen -abck
.
Tuttavia, vorrei anche ottenere i completamenti per comandi specifici: ad esempio, l'input git p
dovrebbe visualizzare il completamento per i comandi di git.Accesso ai comandi di bash per comandi specifici a livello di programmazione
Esiste un modo per utilizzare lo standard compgen
? In caso contrario, ci sono altri modi per ottenere un elenco di completamenti a livello di codice?
[MODIFICA: per chiarire, non sto provando a fornire il completamento a bash - la mia app è un comando di avvio della GUI. Mi piacerebbe semplicemente utilizzare i completamenti esistenti di bash nella mia app.]
Il codice sembra fare esattamente quello che voglio fare con la mia app. Avrò bisogno di portarlo su Bash regolare, ma è comunque molto utile. Molte grazie! –
Ho fatto alcuni test e questo è ciò che viene eseguito per completare "git l":/usr/bin/env bash -c 'source/etc/bash_completion; __print_completions() {for ((i = 0; i <$ {# COMPREPLY [*]}; i ++)); do echo $ {COMPREPLY [i]}; fatto }; COMP_WORDS = (git l); COMP_LINE = "git l"; COMP_COUNT = 6; COMP_CWORD = 1; _idiota; __print_completions ' –
"_git" si trova tramite "complete -p" che stampa "complete -o bashdefault -o default -o nospace -F _git git". Quindi se la prima parola è "git", chiama "_git". COMP_COUNT è la lunghezza della stringa finora più una. COMP_CWORD è la parola da completare (la prima è l'indice 0). –