ico*_*ast 13 ssh shell command-line-interface zsh
我想在 zsh 上设置命令完成以在键入后显示主机名
ssh [TAB]
Run Code Online (Sandbox Code Playgroud)
从我的 .ssh/config 文件中取出名称(最好是从 known_hosts 和 /etc/hosts 以及任何其他有意义的地方)并呈现一个列表。
它目前做了一些这样的事情,但是
所以我想在输入 ssh [TAB] 后在(最好是单个)列表中包含已知的用户名和已知的主机名
(我在 Google 之前来到这里是因为 1)它会导致答案被存储在这里,并且 2)它可能更有效。如果没有其他人回答,我会寻找答案。)
Gil*_*il' 17
这是我的.zshrc. 它自 2002 年以来一直没有改变,所以我今天可能会以不同的方式编写它,但它仍然可以从~/.ssh/configand完成主机名~/.ssh/known_hosts(如果HashKnownHosts关闭 - 在那些日子里它不存在)。
h=()
if [[ -r ~/.ssh/config ]]; then
h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ -r ~/.ssh/known_hosts ]]; then
h=($h ${${${(f)"$(cat ~/.ssh/known_hosts{,2} || true)"}%%\ *}%%,*}) 2>/dev/null
fi
if [[ $#h -gt 0 ]]; then
zstyle ':completion:*:ssh:*' hosts $h
zstyle ':completion:*:slogin:*' hosts $h
fi
Run Code Online (Sandbox Code Playgroud)