分页: 1 / 1

如何清除当前行而不是整个屏幕.

发表于 : 2010-12-30 23:31
zl2970798
for (( i = 60; i != 0; i--))
do
echo $i
sleep 1
done

像上面这个段代码,如果加一个清除的话会清除整个屏幕,怎么清除当前行然后重新打印该行呢?.或者有什么办法能有相同效果

Re: 如何清除当前行而不是整个屏幕.

发表于 : 2010-12-30 23:49
astolia

代码: 全选

for (( i = 60; i != 0; i--))
do
echo -en "\r$i "
sleep 1
done
运行时请直接复制

Re: 如何清除当前行而不是整个屏幕.

发表于 : 2010-12-31 22:40
icyomik
astolia 写了:

代码: 全选

for (( i = 60; i != 0; i--))
do
echo -en "\r$i "
sleep 1
done
运行时请直接复制
谢谢,学习了。

Re: 如何清除当前行而不是整个屏幕.

发表于 : 2011-01-02 20:52
tusooa
别\r
echo -en "\e[1G$i\t"
\t占位的。防止前面的没被清除。

Re: 如何清除当前行而不是整个屏幕.

发表于 : 2011-01-02 21:22
astolia
tusooa 写了:别\r
echo -en "\e[1G$i\t"
\t占位的。防止前面的没被清除。
why?在我看来,\e才是能不用就不用的

Re: 如何清除当前行而不是整个屏幕.

发表于 : 2011-01-03 19:53
glocklee
个人觉得,\r之后再打一排空格比较靠谱。。。

Re: 如何清除当前行而不是整个屏幕.

发表于 : 2011-01-03 21:31
lilydjwg
先回车,再清除到行尾

代码: 全选

echo -e "\r\e[K"