【问题标题】:Easy way to "inherit" Bash completion“继承” Bash 完成的简单方法
【发布时间】:2015-07-08 01:33:06
【问题描述】:

我正在寻找一种将 Bash 补全函数从程序“继承”到脚本中的简单方法。

假设有一个程序 foo 提供自己的 Bash 补全,因此 $ foo sub<TAB> 补全为 $ foo subcommand。现在我想编写一个脚本foo-extra,它采用与foo 相同的参数,在调用foo <arguments> 之前做一些额外的事情。使foo-extra 脚​​本搭载foo 的完成功能的最简单方法是什么?

【问题讨论】:

    标签: bash completion


    【解决方案1】:

    您的foo 使用某个函数完成(如果是标准的,它通常会在/usr/share/bash-completion/completions/foo 中定义,并且可能称为_foo 之类的东西)。使函数成为完成函数的命令是:

    complete -F _foo foo
    

    您可以为任意命令选择相同的功能:

    source /usr/share/bash-completion/completions/foo
    complete -F _foo foo-extra
    

    【讨论】:

    • 我实际上需要一个针对 ZSH 的解决方案,但我要求使用 Bash,因为它是一个更常见的 shell。作为参考,我使用 ZSH 的 complete 命令版本(称为 compdefcompdef _foo foo-extra)让它工作,不过感谢您的有用回答,它完美地回答了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多