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