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

sh/bash/dash/ksh/zsh等Shell脚本
回复
zl2970798
帖子: 51
注册时间: 2008-06-01 12:31
送出感谢: 0
接收感谢: 0
联系:

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

#1

帖子 zl2970798 » 2010-12-30 23:31

for (( i = 60; i != 0; i--))
do
echo $i
sleep 1
done

像上面这个段代码,如果加一个清除的话会清除整个屏幕,怎么清除当前行然后重新打印该行呢?.或者有什么办法能有相同效果
头像
astolia
论坛版主
帖子: 3295
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 552 次

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

#2

帖子 astolia » 2010-12-30 23:49

代码: 全选

for (( i = 60; i != 0; i--))
do
echo -en "\r$i "
sleep 1
done
运行时请直接复制
头像
icyomik
帖子: 76
注册时间: 2010-10-30 17:52
送出感谢: 0
接收感谢: 0

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

#3

帖子 icyomik » 2010-12-31 22:40

astolia 写了:

代码: 全选

for (( i = 60; i != 0; i--))
do
echo -en "\r$i "
sleep 1
done
运行时请直接复制
谢谢,学习了。
个人博客:http://blog.jtwo.me/
女友淘宝:http://icykiss.taobao.com/
你有什么不开心的事情,说出来让大家开心一下。
tusooa
帖子: 6546
注册时间: 2008-10-31 22:12
系统: 践兔
送出感谢: 6 次
接收感谢: 10 次
联系:

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

#4

帖子 tusooa » 2011-01-02 20:52

别\r
echo -en "\e[1G$i\t"
\t占位的。防止前面的没被清除。

代码: 全选

] ls -ld //
头像
astolia
论坛版主
帖子: 3295
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 552 次

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

#5

帖子 astolia » 2011-01-02 21:22

tusooa 写了:别\r
echo -en "\e[1G$i\t"
\t占位的。防止前面的没被清除。
why?在我看来,\e才是能不用就不用的
glocklee
帖子: 53
注册时间: 2006-10-21 8:05
送出感谢: 0
接收感谢: 0

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

#6

帖子 glocklee » 2011-01-03 19:53

个人觉得,\r之后再打一排空格比较靠谱。。。
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#7

帖子 lilydjwg » 2011-01-03 21:31

先回车,再清除到行尾

代码: 全选

echo -e "\r\e[K"
回复

回到 “Shell脚本”