特定目录下某些类型文件的Bash自动补全

13

我有一个未同步配置文件的列表,存在于~/.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

我预见到还会需要另一个工具,因此如果有可以重复使用的部分,那将非常方便。

1个回答

16

如果你正在运行Debian/Ubuntu或可能是其他GNU/Linux发行版,那么在你的/etc/bash_completion.d/目录中应该有这种类型命令补全的示例。下面是一个为Unison设置补全脚本的示例:

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

运行良好,我所做的唯一更改是 complete -o nospace -F _unison_show unison unison-gtk - Scott Kirkwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接