如何将ruby函数的输出打印到文件中

时间:2013-11-25 14:22:09

标签: ruby shell command-line

我在ruby中编写了一个程序。输出对应于真正的长,几千行。

有没有办法可以将此输出写入文件而不是shell中,因为shell只允许向上滚动直到某一点?我知道我可以使用file.puts代替puts。但是,我想知道是否有一个命令用于我可以实现这一点而无需在程序中进行更改?对于shell脚本,我们可以script.sh > output.txt。同样对于shell命令也是如此。但红宝石计划呢?它似乎没有用。

3 个答案:

答案 0 :(得分:2)

问题是./program.rb > output.txt将输出重命名以及输入的提示输入到文本文件中,因此您无法看到正在执行的操作。您有几种选择:

  1. 使用STDERR.puts提示输入,因此重定向不会捕获它。这是我的首选方法。
  2. 使用ARGV将输入传递给您的程序。如果您认为在没有提示的情况下不太难使用该程序,这是一个不错的选择。
  3. 使用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