bash_completion

У меня есть простой скрипт, который создает IP_address -> config_file (используется для загрузки pxe). Мой скрипт называется так:

 lnpxe CONFIG HOSTNAME 

где CONFIG – один из моих конфигурационных файлов, хранящихся в /home/tftp/config/ а HOSTNAME – любое имя хоста. Теперь я пытаюсь настроить bash_completion для моего скрипта. Когда я lnpxe а затем lnpxe TAB , я бы хотел, чтобы мои файлы конфигурации в /home/tftp/config/ «предлагались» мне и автозаполнены. Аналогично, для второго аргумента я хотел бы иметь предложения доступных хостов из моего файла /etc/hosts (аналогично ping или ssh do)

Вот мой файл /etc/bash_completion.d/lnpxe который НЕ работает так, как я хотел бы:

 _lnpxe() { local cur prev COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" _filedir } complete -F _lnpxe -o filenames lnpxe 

Может ли кто-нибудь помочь?

 _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 и _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