考虑:
$ ssh fo<tab>
foo fool football
我将如何编写 for 循环来迭代这些值?
#!/usr/bin/env bash
for SERVER in $(ssh fo<MAGIC HERE>) ; do echo $SERVER ; done
该列表可能会定期更改,因此不能选择对值进行硬编码。在 SSH 的特定情况下,我知道我可以 grep 匹配主机的 SSH 配置文件。但还会出现其他一些完成情况,例如:
$ git che<tab>
checkout cherry cherry-pick
答案对于这些其他临时完成也应该有用。
答案1
康普根只能使用一个单词,如下所示:
compgen -c git
这是适合您的案例的定制解决方案:
您必须首先获取 bash-completion 脚本,然后设置比较_bash_completion
* vars,以便它们满足此用例,然后以编程方式触发本机函数的完成函数然后结果将被收集在COMPREPLY
数组中(示例取自这里):
# load bash-completion helper functions
source /usr/share/bash-completion/bash_completion
# array of words in command line
COMP_WORDS=(git c)
# index of the word containing cursor position
COMP_CWORD=1
# command line
COMP_LINE='git c'
# index of cursor position
COMP_POINT=${#COMP_LINE}
# execute completion function
_xfunc git _git
# print completions to stdout
printf '%s\n' "${COMPREPLY[@]}"
PS:要了解命令完成期间调用的确切函数:使用complete -p <command>
输出 :
checkout
cherry
cherry-pick
clean
clone
column
commit
config
credential
有关此内容的完整概述,您可以访问所有者帖子这里