我有一个bash自动完成功能,它可以查询数据库,为bash中的当前命令行提供可能的完成。完成大约需要3秒钟,在此期间用户没有任何迹象表明他已触发自动完成 - 提示他再按TAB
几次,导致自动完成可能正在运行几次。
一旦启动自动完成,是否可以以某种方式操作命令行以显示正在执行的操作?例如,当我在TAB
命令后按foo
两次时,我希望立即发生以下情况:
$ foo
autocompleting...
然后在确定可能的完成后,改为:
$ foo
bar baz jazz
或者,如果我输入foo j
并按TAB
一次,则输入以下内容:
$ foo j
autocompleting...
应该改为
$ foo jazz
正下方没有任何额外的文字,正如预期的那样。
下一步是考虑在自动完成运行时是否可以使用动态输出,例如,在单个位置打印字符\ | / -
,就像一条线在旋转一样到位 - 以视觉方式表明事情正在发生。这有可能吗?
答案 0 :(得分:1)
当然,这是可能的,我认为你会在这个答案中找到你需要的一切(所以这可能被认为是一个重复的问题): Using BASH to display a progress (working) indicator
您的问题略有不同,因为您要删除微调器然后输出结果。因此,您可以考虑反转背景化的过程。换句话说,你的微调器背景,然后当你的自动完成功能完成时它可以被显式杀死(但在输出结果之前,如果你的代码可能的话)。