我有一个存在于~/.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/

10-10 17:41