除了\r
或\b
方法外,还可以使用\033[2K
控制字符,该字符告诉终端清除整个行。与之相比,\b
这样做的优点是您不必将数字\b
与要删除的字符数进行匹配,并且与之相比,\r
如果新行比旧行短,则不会在屏幕上留下字符一。
下面是它如何被应用到这个问题的例子,这里是相关的应用程序创建一个类似于引导信息输出的一个例子。在此特定示例中,计时器将在到达0秒后消失,并且计时器行将替换为“ Ready!”。短语。
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
printf "One moment please: %d" "$sek"
sleep 1
printf "\r%b" "\033[2K"
done
echo "Ready!"
另一种选择是采用dialog
命令在命令行中创建简单对话框。该对话框将在计时器持续时间内显示在屏幕上,并随着循环的进行而更新,直到完成为止-计时器将以无缝的方式替换为“ Ready!Press to exit”消息:
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
echo "$sek" | dialog --progressbox "Please wait" 10 25
sleep 1
done
dialog --msgbox "Ready! Press <OK> to finish" 10 25
watch
尽管我不确定如何执行该命令,但也许可以通过该命令执行此操作。