一尘不染

如何在控制台应用程序(Linux)中擦除打印的字符?

linux

我正在创建一个需要进度条的小型控制台应用程序。就像是…

Conversion: 175/348 Seconds   |==========          |  50%

我的问题是,如何删除已经打印到控制台的字符?当我达到第51个百分比时,我必须从控制台中删除此行并插入新行。在我当前的解决方案中,这就是发生的事情…

Conversion: 175/348 Seconds   |==========          |  50%
Conversion: 179/348 Seconds   |==========          |  52%
Conversion: 183/348 Seconds   |==========          |  54%
Conversion: 187/348 Seconds   |===========         |  56%

我使用的代码是…

print "Conversion: $converted_seconds/$total_time Seconds   $progress_bar  $converted_percentage%\n";

我正在使用PHP在Linux中进行此操作(只有我会使用该应用-请原谅语言选择)。因此,该解决方案应在Linux平台上运行-
但是,如果您有跨平台的解决方案,那将是更好的选择。


阅读 161

收藏
2020-06-07

共1个答案

一尘不染

我认为您无需为语言选择道歉。PHP是控制台应用程序的绝佳语言。

试试看:

<?php
for( $i=0;$i<10;$i++){
  print "$i \r";
  sleep(1);
}
?>

“ \ r”将用新文本覆盖该行。要换行,您可以只使用“ \ n”,但是我想您已经知道了。

希望这可以帮助!我知道这可以在Linux中使用,但是我不知道它是否可以在Windows或其他操作系统上使用。

2020-06-07