Simplesmente não.
Razão:
-
Não há opção em "set" ou "shopt" para especificar o formato de saída das sugestões de conclusão de guias. A única exceção é o ambiente COLUMNS , no entanto, você não pode alterá-lo para um valor diferente.
-
Para finalizações personalizadas (como --opção de ação), você pode substituir a função de conclusão com saída para stdout / stderr, para exibir algo como
ls -l
juntamente com as sugestões de conclusão. No entanto, a conclusão do nome do arquivo é codificada, você não pode sobrescrevê-lo pelocomplete
integrado.
Aqui está um pequeno exemplo sujo para exibir informações detalhadas junto com sugestões de conclusão de guias. Imagine que você tem um programa foo
e aceita quatro opções bar
, barr
, barrr
, car
, a função de conclusão suja seria:
function _foo() {
local cmds=(bar barr barrr car)
local cur n s
if [ $COMP_CWORD = 1 ]; then
cur="${COMP_WORDS[1]}"
n="${#cur}"
# -- dirty hack begin --
echo
cat <<EOT | while read s; do [ "${s:0:n}" = "$cur" ] && echo "$s"; done
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
car: choose this option if you want a car
EOT
# ++ dirty hack end ++
COMPREPLY=($(compgen -W "${cmds[*]}" "$cur"))
fi
} && complete -F _foo foo
Agora você pode ver um pequeno helpdoc antes das sugestões:
$ foo ba<tab>
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
r
(O caractere único 'r' na última linha é preenchido automaticamente com o prefixo ba
.)
E, quando o prefixo é ambíguo, a função de conclusão é avaliada duas vezes, a lista de sugestões chega no final:
$ foo bar<tab><tab>
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
bar barr barrr