非邻近目录的 Bash 自动完成

非邻近目录的 Bash 自动完成

我最近编写了一个程序,如果目录相对于给定的基线具有唯一名称,则可以立即切换到该目录。例如,如果我有一个目录:

~/Documents/foo

并且 foo 是 下所有目录中唯一的结束名称~/Documents/,那么使用命令“foo”运行程序将立即将我当前的工作目录更改为, ~/Documents/foo无论我当前在目录树中的什么位置。

由于这些目录(如上例中的“foo”)具有唯一名称,因此我希望它将其识别为唯一名称并自动完成。例如,如果 foo 是~/Documents其下唯一以“f”开头的目录,我希望:

program_name f [TAB]

自动完成:

program_name foo

问题是,考虑到程序的整个用途,foo 通常不是我当前工作目录的相邻目录。通常,当使用常规功能时cd,终端会自动完成目录,因为您会沿着树按顺序输入每个目录。

是否可以以某种方式将这些唯一的目录名称添加到自动完成功能中?如果可能的话,我希望它能够识别唯一的文件夹名称,而无需手动将每个文件夹名称添加到某个文件中。我的程序也有不同的级别(例如,它实际上最多可以接受三个参数,并且只要第三个文件夹名称相对于从第二个开始的树是唯一的,第二个相对于第一个是唯一的,第一个相对于某个常量基线是唯一的~/Documents,那么它会将我当前的工作目录更改为最后一个给定的参数),因此,如果能给出一个可靠的答案,我将非常感激,看看我如何才能尽可能地从终端中挤出最多的自动完成功能。

另外,我还是有点初学者,所以尽量像我五岁的时候那样说:)

先感谢您

相关内容