我有~/.unison/*.prf
中存在的协调配置文件列表。
我希望bash完成,这样当我输入unison
或unison-gtk
并点击标签时,它会列出该文件夹中的.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
我预计还需要这个用于其他工具,所以如果有可以重复使用的部件会很方便。
答案 0 :(得分:15)
如果您正在运行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