bash_完成

bash_完成

我有一个简单的脚本,它创建一个符号链接IP_address-> config_file(用于 pxe 启动)。我的脚本是这样调用的:

lnpxe CONFIG HOSTNAME

CONFIG我的配置文件之一存储在哪里/home/tftp/config/,并且HOSTNAME是任何主机名。现在,我正在尝试为我的脚本设置 bash_completion。当我输入lnpxe然后按 时TAB,我希望我的配置文件/home/tftp/config/“建议”给我并自动完成。同样,对于第二个参数,我想从我的/etc/hosts文件中获得可用主机的建议(类似于 ping 或 ssh 所做的)

这是我的/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

有人可以帮忙吗?

答案1

_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

相关内容