【发布时间】:2017-01-20 09:57:21
【问题描述】:
我想在无限循环中一次又一次地运行命令行程序。
程序偶尔会输出不同的数据。
每当输出新数据时,我希望之前的数据被覆盖。
示例:
以下程序将输出一天中的时间。
#include <stdio.h>
#include <time.h>
int main (){
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "Current local time and date: %s", asctime (timeinfo) );
}
天真的方法如下:
while true; do ./main; clear; done
我当然可以将它通过管道传输到仅在更改时刷新输出的自定义程序中,
但我希望找到使用标准 linux 命令的解决方案
(或 Bash 语言功能)。
程序输出可以是多行的,所以不能返回(/r) 和重写。
【问题讨论】:
-
不是你问的那样,但如果你被允许修改原始程序,你可以让它自己清除行。这可以避免闪烁,因为它只在有新输出要打印时才会这样做(并且您可以控制它何时刷新)。这就是“替换”输出行的命令行程序的工作方式:stackoverflow.com/questions/1508490/…
-
@ChrisKitching 我正在寻找任何程序的替代品。例如,我也可以将它与
ls一起使用。它可以通过管道完成,或者程序可以将另一个程序名称作为参数。什么都行。也可以多行输出! -
你能试试
watch --interval=1 --no-title ./main吗?不完全相同,但可能足够接近? -
@fvu 效果很好。
-
好吧,如果@GöranUddeborg 将它们整合到他的答案中那就太好了,不是吗? :)
标签: linux bash shell terminal command