当我输入 ssh 后按 Tab 键完成时,我得到了一个可以通过 ssh 进入的服务器列表。我如何通过单个命令获取相同的列表?
伪命令如下:
ssh --list-available-servers
我无法找到诀窍/usr/share/bash-completion/completions/ssh
答案1
您可以在函数 _ssh() 的末尾看到 ssh 浏览 ssh 配置文件的代码块,稍后
_known_hosts_real -a -F "$configfile" "$cur"
它从已知主机文件中提取主机名。
您可以手动调用此命令,但结果将以变量形式返回,而不是写出:
$ . /usr/share/bash-completion/completions/ssh # doesn't have to be required
$ COMPREPLY=(); _known_hosts_real -a "" && echo ${COMPREPLY[*]}
您将从已知主机文件 () 中获取建议主机的列表~/.ssh/known_hosts
。
如果您还想获取配置文件中的信息,则还需要添加配置文件参数:
$ COMPREPLY=(); _known_hosts_real -F ~/.ssh/config -a "" && echo ${COMPREPLY[*]}