bash_completion

1

Eu tenho um script simples, que cria um link simbólico IP_address - > config_file (usado para o boot pxe). Meu script é chamado assim:

lnpxe CONFIG HOSTNAME

em que CONFIG é um dos meus arquivos de configuração armazenados em /home/tftp/config/ e HOSTNAME é qualquer nome de host. Agora, estou tentando configurar o bash_completion para o meu script. Quando digito lnpxe e, em seguida, pressiono TAB , gostaria de ter meus arquivos de configuração em /home/tftp/config/ "sugeridos" para mim e preenchidos automaticamente. Da mesma forma, para o segundo argumento, gostaria de ter sugestões de hosts disponíveis do meu arquivo /etc/hosts (semelhante ao ping ou ssh do)

Aqui está o meu arquivo /etc/bash_completion.d/lnpxe , que NÃO funciona como gostaria:

_lnpxe()
{
    local cur prev
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    _filedir

}
complete -F _lnpxe -o filenames lnpxe

Alguém poderia me ajudar?

    
por user1968963 19.05.2013 / 20:28

1 resposta

2
_lnpxe()
{
    HOSTFILE=/etc/hosts
    local word
    COMPREPLY=()
    if [ 1 -eq "$COMP_CWORD" ]; then
      pushd /home/tftp/config &>/dev/null || return 1
      word="${COMP_WORDS[COMP_CWORD]}"
      COMPREPLY=($(compgen -f "$word"))
      popd &>/dev/null
    fi
    if [ 2 -eq "$COMP_CWORD" ]; then
      word="${COMP_WORDS[COMP_CWORD]}"
      COMPREPLY=($(compgen -A hostname "$word"))
    fi

}
complete -F _lnpxe lnpxe
    
por 19.05.2013 / 22:20

Tags