我有了一个显示状态的功能的shell脚本,沿东西线控制台的一行:写作的printf从shell脚本
display() {
clear
echo -e " Download In Progress\n"
echo -e " Please Wait \n"
echo -e " Step: $*"
}
shell脚本,然后做它的主工作
display " 1 starting"
does some work
display " 2 complete"
display " 2 starting"
does some work
display " 2 complete"
我的问题是,我的一个“做一些工作”是一个C程序,其中有几个printf语句。目前,我已经有了重定向到一个日志文件,这样我可以看到的地方他们的标准输出:
display " 1 starting"
/usr/bin/mycprogram >> /tmp/mylogfile.lg
display " 2 complete"
但我真正想要的是有写到标准输出“步骤:”行。我可以简单地关闭重定向,并将输出显示在屏幕上,但它会一行一行,并将整齐的“正在下载”屏幕从屏幕上移开,并留下一条难看的消息。
我该如何完成将各个printf消息全部放在同一行并保留头部?
这几乎就是我认为OP希望。对于GNU awak,你可以从程序中的每一行*覆盖相同的*行'awk'{printf(“\ r%* s \ r%s”,length($ 0),“”,$ 0)}'' – StoryTeller
如果线路太长,它仍然会将东西从屏幕上移开。我不完全确定OP究竟需要什么。也许我应该先问。 – louigi600
我认为OP只是想防止垂直滚动,同时仍然输出每一行输入(可能在同一行) – StoryTeller