特殊目录中某些类型文件的 bash 补全

标签 bash autocomplete

我有一个存在于 ~/.unison/*.prf 中的一致配置文件列表。

我想要 bash 补全,这样当我键入 unisonunison-gtk 并点击 tab 时,它会列出 .prf 该文件夹中没有 .prf 部分的文件。

也许举个例子会更清楚:

$ ls ~/.unison/*.prf
default.prf dot-mozilla.prf to-desktop.prf

$ cd  ~  # just to show you don't have to be in the ~/.unison folder
$ unison to<tab>
$ unison to-desktop

我预见到其他工具也需要这个,所以如果有可以重复使用的部件会很方便。

最佳答案

如果您正在运行 debian/ubuntu 或其他可能的 GNU/Linux 发行版,您的/etc/bash_completion.d/目录中应该有此类完成的示例。下面是一个示例,说明如何为齐奏设置完成脚本:

have unison &&
_unison_show()
{
        local cur

        COMPREPLY=()
        cur=${COMP_WORDS[COMP_CWORD]}
        COMPREPLY=($( compgen -W "$(for x in ~/.unison/*.prf; do echo $(basename ${x%.prf}); done)" -- $cur ) )
}
complete -F _unison_show unison

关于特殊目录中某些类型文件的 bash 补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803653/

相关文章:

regex - 退出值正则表达式bash问题

vim - 使用 Clang 的 Vim 的 C 系列语义自动补全插件(C/C++ 补全)(clang_complete、YouCompleteMe)

jquery - 使用 typeahead Bloodhound 处理具有别名或同义词的搜索项目

bash - 在 bash 中合并多个参数扩展操作

bash - 无法访问bash括号内的变量

linux - 从长行中按位置删除字段

css - PhpStorm CSS 代码完成不适用于 Twig 扩展模板

java - Eclipse 自动完成刺激

javascript - 我怎么能不对 YUI 自动完成选择中的模糊事件使用react

linux - 从一个文件测试多个服务器的 telnet 连接