zsh 完成 cssh:从 /etc/hosts 以及 ~/.ssh/config 完成主机

zsh 完成 cssh:从 /etc/hosts 以及 ~/.ssh/config 完成主机

我的 zsh 完成文件_cssh有这一行,它仅从 /etc/hosts 完成主机:

'*:userhostport: _alternative hosts:host:_hosts usersathosts:userathost:_user_at_host'

如何使其完成 ~/.ssh/config 中定义的主机,与 ssh 相同?完整的 _ssh 文件是这里

我不需要填写用户名。只是来自的主机名/etc/hosts以及 中定义的主机~/.ssh/config。另外,重要的是多主机可以完成(cssh是cluster ssh,需要多主机,不像ssh)

答案1

请您尝试alternative从两者/etc/hosts更新~/.ssh/config.

"*:userhostport: _alternative 'hosts from /etc/hosts:hosts:host:_hosts' 'hosts from ~/.ssh/config:hosts:host:_ssh_config_hosts' usersathosts:userathost:_user_at_host"

并将以下函数添加到_cssh文件中的函数定义之前_cssh

_ssh_config_hosts() { local hosts hosts=("${(@f)${(ps:\n:)${(f)"$(<$HOME/.ssh/config)"}:#Host*}") _describe -t hosts 'hosts from ~/.ssh/config' hosts }

那么你应该可以使用/etc/hosts~/.ssh/config

相关内容