隐藏系统命令导致ruby

在ruby中隐藏系统命令的结果有多容易? 例如,我的一些脚本运行

system "curl ..." 

我不希望看到下载的结果。

如果您愿意,可以使用更复杂的popen3分别控制STDIN,STDOUT和STDERR:

 Open3.popen3("curl...") do |stdin, stdout, stderr, thread| # ... end 

如果你想让某些流静音,你可以忽略它们,或者如果重定向或解释那个输出很重要,你仍然可以使用它。

除了popen之外最简单的方法:

  1. 使用%x而不是系统。 它会自动管道

     rval = %x{curl ...} #rval will contain the output instead of function return value 
  2. 手动管道到/ dev / null。 在UNIX中工作,如系统,而不是Windows

     system "curl ... > /dev/null" 

最简单的一个是重定向stdout 🙂

 system "curl ... 1>/dev/null" # same as `curl ... 1>/dev/null` 

要在不修改命令的情况下使其与system一起使用:

 system('curl ...', :err => File::NULL) 

资源