bash - 任意命令完成 - 可能吗?

标签 bash

我正在寻找一种 Hook 自定义 bash 完成函数的方法。问题是,我希望这个完成功能不仅适用于特定命令,而且适用于所有命令。

这可能吗?找了半天,网上找不到资源。

将问题简化为最微不足道的情况:是否可以始终对字符串“foo”进行制表符补全?

含义 echo f<tab>将扩展为 echo foo , 和 ls fo<tab>将扩展为 ls foo

对于上下文:我正在尝试实现类似于 http://blog.plenz.com/2012-01/zsh-complete-words-from-tmux-pane.html 的东西在 bash 中,但我开始担心这是不可能的。

最佳答案

您可以使用 -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
...

关于bash - 任意命令完成 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153081/

相关文章:

linux - Bash IP IF THEN ELSE 语句

linux - 删除除文件扩展名以外的所有内容

linux - 从 makefile 访问 bash 特殊变量

linux 按日期列分组并显示计数

linux - 如何将一个命令的输出作为下一个命令的参数值传递

bash - 从 Bash 检查 postgres 查询的结果

php - Macports 切换 PHP CLI 版本

linux - 使用排除从 jar 存档中删除文件

bash - 从 shell 脚本中的函数返回值

linux - 查找旧文件并写入列表,然后删除旧文件的脚本