我有一个bash自动补全功能,它可以查询数据库,为bash中的当前命令行提供可能的补全。它大约需要3秒才能完成,在这段时间内,用户没有任何迹象表明他触发了自动完成--提示他再按几次TAB,导致自动完成可能会再运行几次。
是否有可能在启动自动补全后,以某种方式操作命令行以显示正在执行某些操作?例如,当我在命令foo之后按两次TAB时,我希望立即发生以下情况:
$ foo
autocompleting...然后在确定可能的完成后,更改为:
$ foo
bar baz jazz或者,如果我键入foo j并按TAB键一次,则会出现以下结果:
$ foo j
autocompleting...应更改为
$ foo jazz它下面没有任何额外的文本,正如预期的那样。
下一步是考虑是否可以在自动完成运行时动态输出,例如,在单个位置打印字符\ | / -,就像一行在原地旋转一样--以直观地指示正在发生的事情。这有可能吗?
发布于 2015-01-31 02:10:21
当然,这是可能的,我想你会在这个答案中找到你需要的一切(所以这可能被认为是一个重复的问题):Using BASH to display a progress (working) indicator
您的问题略有不同,因为您希望删除微调器,然后输出结果。因此,您可能会考虑颠倒已有背景的流程。换句话说,在后台处理你的微调函数,然后当你的自动完成函数完成时(但在输出结果之前,如果你的代码可能的话),它可以被显式地杀死。
https://stackoverflow.com/questions/28193480
复制相似问题