我正在编写一个Ruby命令行实用程序,我希望它能够使用新数据更新控制台中的一行,而不是打印多行输出。 我使用的效果类似于使用wget
时可能会看到的控制台进度条。
例如:
app.rb
#!/usr/bin/ruby env
data = %w[this is some data]
data.each {|s| puts s}
当我运行此应用程序时,它将输出以下4行:
$ ruby app.rb
this
is
some
data
$
我希望以下示例中的[]之间的区域显示输出,一次一个字。
$ ruby app.rb
[ this ]
$
有什么想法吗?
答案 0 :(得分:4)
使用\r
(回车)将光标移动到行的开头:
data = %w[this is some data]
data.each { |s|
sleep(0.5)
print "\r%-20s" % s # `print` instead of `put` to avoid newline.
# Additional spaces to overwrite remaining characters of previous output
}
puts
请参阅Demo。
答案 1 :(得分:0)
如果您想在同一行打印,请使用print s
代替puts s
。