提示一组目录的制表符补全的别名?

提示一组目录的制表符补全的别名?

是否可以创建一个 bash 别名,它能够提示我对一组目录进行制表符补全?

假设我有许多源代码控制的项目,每个项目的主路径位于~/projs/<projname>/trunk

现在,我创建了一个 Bash 别名,可以更方便地进行切换:

go-to <projname>

cd ~/projs/<projname>/trunk无论我在文件系统中的位置如何,都会尝试。

是否有可能<projname>在我编写时以某种方式获得选项卡完成提示go-to[space][Tab],以便我可以看到我有哪些可用的项目名称?

(这是最新的 Ubuntu 发行版)

答案1

这不是别名工作,它被称为可编程完成有关详细信息,请参见 man bash)。最小完成示例bash如下所示:

_go-to()  {
    COMPREPLY=( $(compgen -W "~/projs/proj1/trunk ~/projs/proj2/trunk" -- "${COMP_WORDS[COMP_CWORD]}") );
}
complete -F _go-to go-to

因此,首先我们创建一个函数_go-to,然后将其绑定到名为 的命令go-to

现在go-to <tab>将完成go-to /home/user/projs/proj,另一个<tab>将列出建议:

/home/user/projs/proj1/trunk /home/user/projs/proj2/trunk

相关内容