Como implementar o preenchimento automático bash dinâmico

7

Eu fiz um script que lista os projetos disponíveis. Você pode iniciar um projeto inserindo script start <project> .

Agora, seria ótimo ativar o preenchimento automático, por isso, se você inserir start Organ e pressionar TAB , ele será preenchido automaticamente em start Organisation .

A parte difícil é que a lista de projetos é dinâmica. A lista de projetos disponíveis muda com freqüência e todos os usuários têm diferentes projetos disponíveis.

Minha ideia era salvar os projetos disponíveis em um arquivo json e usar esse arquivo para ativar o preenchimento automático. Eu sei que tenho que criar um arquivo em /etc/bash_completion.d/ , mas não sei como posso implementar um autocompletar "dinâmico" que depende dos projetos disponíveis.

    
por Andreas 06.09.2015 / 10:01

1 resposta

10

Vamos supor que você tenha um script chamado output_projects , que lista todos os projetos disponíveis. Agora chame de uma função bash:

_list_projects() {
  ./output_projects
}

Agora vincule-o a start como no nosso exemplo com algo assim:

complete -F __list_projects start

Basicamente, cada vez que você pressionar <tab> bash, executará a função e obterá uma nova lista de projetos disponíveis.

Testado em:

$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)

Isso resolveu seu problema? Se não, por favor reformule e esclareça o que você estava procurando.

    
por 06.09.2015 / 15:24