我在ruby中编写了一个程序。输出对应于真正的长,几千行。
有没有办法可以将此输出写入文件而不是shell中,因为shell只允许向上滚动直到某一点?我知道我可以使用file.puts
代替puts
。但是,我想知道是否有一个命令用于我可以实现这一点而无需在程序中进行更改?对于shell脚本,我们可以script.sh > output.txt
。同样对于shell命令也是如此。但红宝石计划呢?它似乎没有用。
答案 0 :(得分:2)
问题是./program.rb > output.txt
将输出重命名以及输入的提示输入到文本文件中,因此您无法看到正在执行的操作。您有几种选择:
STDERR.puts
提示输入,因此重定向不会捕获它。这是我的首选方法。ARGV
将输入传递给您的程序。如果您认为在没有提示的情况下不太难使用该程序,这是一个不错的选择。File.open
创建输出文件并直接写入。有时这是最明智的选择,但通常你想做前两个中的一个。答案 1 :(得分:0)
这适用于简单的输出输出:
foo.rb:
foo = gets.chomp
puts "Input was: " + foo
终端:
ruby foo.rb > test.txt
答案 2 :(得分:0)
如果程序要求输入,也许您可以将程序更改为接受来自命令行(ARGV [0]等)的输入,然后将输出重定向到文件:
ruby myprogram > out.txt