Menu suspenso no Bash

2

Como posso fazer o Bash mostrar um menu suspenso estilo da Web ao digitar o argumento em um comando personalizado? (Fazer funcionar com comandos embutidos ou Unix padrão é secundário.)

As partes cruciais do recurso são:

  1. Ele deve exibir as ocorrências imediatamente durante a digitação; sem pressionar TAB ou qualquer coisa. Se isso for impossível, pressionar TAB seria aceitável, embora indesejável.
  2. Você deve ser capaz de aumentar ou diminuir o número de acessos. Uma alternativa seria pressionar 1-9 para selecionar os hits diretamente, mas o comportamento preferido é aquele que todos conhecemos do menu suspenso em outro lugar.

Veja um exemplo com um comando "dicionário" fictício:

$ dict a
     aardvark
     abnormal
     abacab

Digite r :

$ dict ar
     arithmetic
     arthritis
     aruba

Pressione a seta para baixo (realce ANSI mostrado em maiúsculas aqui):

$ dict ar
     ARITHMETIC
     arthritis
     aruba

Pressione Enter para selecionar (faz a escolha e limpa depois de si):

$ dict arithmetic

Se não houver suporte integrado ou nenhum pacote que faça isso, como seria possível implementá-lo por conta própria? (Eu acho que sei ANSI suficiente para programar o dropdown real, mas como eu faria o meu script "chutar" na hora certa, ou seja, ao digitar o primeiro a )?

PS! Eu obviamente sei que o Bash tem conclusão de tabulação que imprime possíveis escolhas, mas não oferece exibição durante a digitação e opções de cursores, que é o que eu estou procurando.

PPS! Não sei se o menu suspenso funcionaria melhor apontando para cima, pois o cursor pode estar na linha inferior do terminal e depois ter que rolar para cima para caber no menu suspenso.

    
por forthrin 11.08.2018 / 22:24

0 respostas