任意命令完成 - 可能吗?

时间:2015-05-10 15:18:30

标签: bash

我正在寻找一种方法来挂钩自定义bash完成功能。问题是,我希望这个完成功能不仅适用于特定命令,还适用于所有命令。

这甚至可能吗?看了一会儿,我无法在网上找到任何资源。

要将问题减少到最简单的情况:是否可以始终对字符串&f 39&f 39进行制表完成?

含义echo f<tab>会扩展为echo foo,而ls fo<tab>会扩展为ls foo

对于上下文:我试图在bash中实现与http://blog.plenz.com/2012-01/zsh-complete-words-from-tmux-pane.html类似的内容,但我开始担心它不可能。

1 个答案:

答案 0 :(得分:4)

您可以使用-D命令的complete选项执行此操作:

suggest_hello()
{   
    COMPREPLY=( hello )
    return 0
}

complete -D -F suggest_hello

现在每当我输入echo h<Tab>时,我都会echo hello

$ help complete
complete: ...
...
      -D  apply the completions and actions as the default for commands
          without any specific completion defined
...