2011-09-09 80 views
9

是否有一種簡單的方法可以讓Ruby在一行中打印,然後在下一次打印時,從一開始就打印到同一行。Ruby在同一行上多次打印

我想在生成文件時在stdout上顯示一個簡單的文件計數器。它看起來像是屏幕上相同位置的快速更新號碼。

回答

16

可以使用\ r ..

while(true) do 
    print "\\\r" 
    print "|\r" 
    print "/\r" 
end 

將打印的字符,然後移動光標返回並打印了它,使有點像飛旋事情。否則,你可以看看像詛咒....(https://github.com/rkumar/rbcurse爲紅寶石包裝)

0

如果您打印到類似終端的東西,您可以使用控制字符或詛咒。如果你知道你正在處理的物品有多少,那麼只需製作一個文本進度條就可以更容易一些,不過,就像wget/etc一樣。

6

你可以嘗試這樣的事情:

print "Hello" 
print 13.chr 
print "123" 

如果你的控制檯支持換行,那麼它應該取代第一字符和打印「123lo」。用計數器可能如下示例如下:

100.times{|x| print x; print 13.chr; sleep 0.01} 
+0

令人生氣的是,這在Ubuntu上本地工作,但不通過SSH在SUSE上表現。順便說一句 - 不是一個CR而不是LF – stjohnroe