我想一遍又一遍地向终端写入多行。就像是
echo "One Line"
echo "Two Lines"
echo "\r\b\rThree Lines"
echo "Four Lines"
理想情况下,这首先会输出:
One Line
Two Lines
然后这个输出将被替换为
Three Lines
Four Lines
问题是,虽然回车符可以让你覆盖一行输出,但你不能用 \b 跳过 \n。然后我如何覆盖多行?
我找到了一个解决方案,需要进行一些挖掘,但我仍然不完全确定这个解决方案是如何工作的。然而,程序 tput 似乎允许您获取特殊字符来清除行并定位光标。具体来说,tput el
将清除到当前行的开头(而不是仅仅重新定位光标)。方便的是,tput cuu1
会将光标向上移动一行。因此,如果在 bash 脚本中声明如下变量:
UPLINE=$(tput cuu1)
ERASELINE=$(tput el)
然后您可以编写如下脚本:
UPLINE=$(tput cuu1)
ERASELINE=$(tput el)
echo "One Line"
echo "Two Lines"
echo "$UPLINE$ERASELINE$UPLINE$ERASELINE\c"
echo "Three Lines"
echo "Four Lines"
你会得到想要的输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)