【问题标题】:zsh completion for custom script自定义脚本的 zsh 补全
【发布时间】:2014-12-11 01:25:11
【问题描述】:

我编写了一个小脚本,它从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/ 中,我不介意如果它从那里得到它的想法。

【问题讨论】:

    标签: linux zsh completion


    【解决方案1】:

    我建议这样:

    #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 相同的主机,您可以从.../functions/Completion/Unix/_ssh 复制_ssh_hosts 代码。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多