当前位置: 首页 > 面试题库 >

更新命令行输出,即进度

韦阳辉
2023-03-14
问题内容

我希望能够在命令行上的简单PHP脚本中显示进度表。而不是看到

Progress: 0%
Progress: 1%
etc...

我只想更改数字,并替换以前的数字,就像git clone一样Resolving deltas: 100% (8522/8522), done.

在搜索时,我在Perl中发现了相同的问题,这很完美,但是在PHP中找不到。可能吗?如果没有,我将求助于C。

谢谢


问题答案:

这可以使用 ANSI转义序列 来完成- 列表请参见此处。

在PHP中,将在该页面上"\033"指示时使用ESC

在您的情况下,您可以使用以下方法:

echo "Progress :      ";  // 5 characters of padding at the end
for ($i=0 ; $i<=100 ; $i++) {
    echo "\033[5D";      // Move 5 characters backward
    echo str_pad($i, 3, ' ', STR_PAD_LEFT) . " %";    // Output is always 5 characters long
    sleep(1);           // wait for a while, so we see the animation
}

我简化了一点,确保我总是有5个额外的字符,并始终显示相同数量的数据,以始终向后移动相同数量的字符…

但是,当然,如果需要的话,您应该能够做的更加复杂;-)

还有许多其他有趣的转义序列:例如,颜色可以大大增强您的输出;-)



 类似资料:
  • 问题内容: 我正在编写一项服务,该服务必须将已执行命令的输出流式传输到父级和日志中。当过程很长时,问题是给我最终的(字符串)结果。 是否可以给出正在发生的事情的部分输出,例如在shell中 PS仅输出将是: 但就我而言,这还不够。 问题答案: 您发布的代码有效(执行了合理的命令)。 这是用Go语言编写的一个简单的 “长时间运行的任务” ,供您调用和测试您的代码: 编译它并作为命令来调用它。您将看到

  • 我想使用OpenNLP来标记泰语单词。我下载了OpenNLP和Thai tokenize模型,并运行了以下程序 我将下载的放在我调用的目录中并运行以下内容。在中包含此文本。但是,我得到的输出只有这些文本: 我对OpenNLP非常陌生,如果有人知道如何从中获取输出,请告诉我。

  • 问题内容: 我有一个系统,需要从几个不同的进程接收输入。最简单的只是命令行,用户可以在其中手动输入数据。这些数据将添加到并由主流程稍后处理,但我还没有走那么远;在进程内部调用似乎不起作用。我抽出了代码的精髓,下面是一个示例: 这个简单的代码抛出了这一点: 如何在Python的进程中获取命令行输入? 问题答案: 当您在Python中生成线程时,它将关闭stdin。您不能使用子流程来收集标准输入。使用

  • 问题内容: 我使用以下有效的代码,问题是输出与进程完成执行时一样被打印,我想将输出实时打印到屏幕上,而在进程完成时不提供所有输出,我该如何实现? *尝试提出的解决方案时 *更新 ,我得到的输出像 问题答案: 使用此答案中提供的解决方案:流命令输出进度 一些解释: 这行: 创建一个将从提供该进程写入的输出的管道读取的。 这行: 指示扫描程序以s代替默认行来读取输入。 请注意,上面的示例仅流式处理标准

  • 当某个特定的文件更新后 Puppet 就该采取一些行动,这是一个非常常见的模式。 例如,在 rsync 配置片段的例子中,一旦修改了某个片段文件,就会调用 exec 资源更新主配置文件 rsyncd.conf。 每次运行 Puppet,exec 资源都会被运行,除非指定了如下参数中的一个: creates onlyif unless refreshonly => true refreshonly

  • 问题内容: 我想从命令行的查询输出到MySQL获得无标题的CSV数据。我在与MySQL服务器不同的计算机上运行此查询,因此所有带有“ INTO OUTFILE”的Google回答都不好。 所以我跑了。输出的内容看起来像这样: 好吧,那不好。但是,嘿,看!如果我仅将其通过管道传递到 任何内容 ,它将变成制表符分隔的列表: 那样更好-至少可以通过程序分析。但是我不想要TSV,我想要CSV,也不需要那个