自定义脚本的zsh完成

时间:2014-12-11 01:25:12

标签: linux zsh completion

我写了一个小脚本,它从https://wiki.archlinux.org/index.php/full_system_backup_with_rsync运行整个系统rsync,它接受一些命令行选项和系统的主机名作为参数。我想把这种类型的自动完成赋予像ssh这样的东西。但是,我真的不想进入用户,因为root几乎是唯一能够做到这一点的用户。

理想情况下,我想输入wholesystem.sh fi并填写fileserver.domain.com

这是我的自定义完成文件。这些选项确实有效,但主人填写显然没有,我只是迷失了从这里开始的地方。

#compdef wholesystem.sh
typeset -A opt_args
_arguments \
  '-h[help]' \
  '-s[silent]' \
  '-v[verbose]' \
  '-d[dry run]' \
  ':remote system:_user_at_host:'

我可以从〜/ .ssh / known_hosts获取它,我很好,或者......备份系统将备份保存在〜/ WholeSystems / host.domain.com /中,我不会&# 39;不要介意从那里得到它的想法。

1 个答案:

答案 0 :(得分:0)

我建议这样的事情:

#compdef wholesystem.sh

_wholesystem.sh() {
  typeset -A opt_args
  _arguments \
    '-h[help]' \
    '-s[silent]' \
    '-v[verbose]' \
    '-d[dry run]' \
    ':remote system:_wholesystem_hosts'
}

_wholesystem_hosts() {
[...]
}

_wholesystem.sh

_wholesystem_hosts的内容取决于您想要的主机类型。例如,如果您想要与ssh相同的主机,则可以从_ssh_hosts复制.../functions/Completion/Unix/_ssh代码。

我不知道这是否是一种好办法,但这似乎有效。

相关问题