【问题标题】:Bash: show a progress indicator during long autocompletionBash:在长时间自动完成期间显示进度指示器
【发布时间】:2015-01-28 13:28:17
【问题描述】:

我有一个 bash 自动补全功能,它可以查询数据库,为 bash 中的当前命令行提供可能的补全。完成大约需要 3 秒,在此期间,用户没有任何迹象表明他已触发自动完成 - 提示他再按几次 TAB,导致自动完成可能再运行几次。

是否可以在启动自动完成后以某种方式操作命令行以显示正在执行的操作?例如,当我在命令foo 后按两次TAB 时,我希望立即发生以下情况:

$ foo
autocompleting...

然后在确定可能的完成后,更改为:

$ foo
bar        baz        jazz

或者,如果我输入foo j 并按一次TAB,则如下:

$ foo j
autocompleting...

应该改为

$ foo jazz

正如预期的那样,它下面没有任何额外的文字。

下一步将考虑是否可以在自动完成运行时进行动态输出,例如,在单个位置打印字符 \ | / -,就好像一条线在原地旋转一样——以视觉方式表示某事正在发生。这可能吗?

【问题讨论】:

    标签: bash autocomplete


    【解决方案1】:

    当然,有可能,我想你会在这个答案中找到你需要的一切(所以这可能被认为是一个重复的问题): Using BASH to display a progress (working) indicator

    您的问题略有不同,您需要移除微调器,然后输出结果。因此,您可能会考虑反转后台进程。换句话说,让你的微调器后台运行,然后当你的自动完成功能完成时,它可以被明确地杀死(但在你的代码可能的情况下,在输出结果之前)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      相关资源
      最近更新 更多