jjzjj

shell-exec

全部标签

ruby - Ruby 能否访问出现的 shell 命令的输出?

我的Ruby脚本正在运行一个shell命令并解析它的输出。但是,似乎该命令首先执行并将输出保存在数组中。我希望能够在打印时实时访问输​​出行。我玩过线程,但还没有让它工作。有什么建议吗? 最佳答案 您正在寻找管道。这是一个例子:#Thisexamplerunsthenetstatcommandviaapipe#andprocessesthedatainRubyasitcomebackpipe=IO.popen("netstat3")while(line=pipe.gets)printlineprint"and"end

ruby - 我如何指示 Capistrano 3 加载我在远程主机上设置的 shell 环境变量?

我想指示Capistrano加载在远程服务器上定义的环境变量。我该怎么做?似乎当我在.bashrc文件中导出我的环境变量时,Capistrano没有考虑它们。Capistrano似乎正在执行/usr/bin/env来创建执行远程命令的环境,但这似乎并没有从.bashrc加载环境变量。我还要告诉你,我也在使用rvm-capistrano(以防万一它可能有帮助)。有什么线索吗? 最佳答案 Capistrano实际上确实加载.bashrc。但在文件顶部附近,您会发现以下行之一:#Ifnotrunninginteractively,don'

ruby - 如何在 Ruby 中触发 shell 脚本并在后台(异步)运行?

我有一个名为test.sh的shell脚本。如何从Ruby触发test.sh?我希望test.sh作为后台进程运行,这在Ruby中意味着它是一个异步调用。STDERR和STDOUT也需要写入特定的文件。有什么想法吗? 最佳答案 @TanzeebKhalili的回答有效,但您可能会考虑Kernel.spawn(),它不等待进程返回:pid=spawn("./test.sh")Process.detach(pid)请注意,根据文档,无论您使用spawn()还是手动使用fork()和system(),您都应该在退出之前获取PID和Proc

ruby - 使用 bundle exec 可以解决这个问题吗?

这是我的Gemfilesource:rubygemsgem'rake','0.9.2.2'gem'sinatra'gem'activerecord','3.0.9'gem'pg','~>0.12.2'gem'logger'gem'nokogiri'group:development,:testdogem'rack-test'gem'ruby-debug19'gem'sqlite3'end我运行在其他项目中工作的rakeconsole,现在我收到这条消息:您已经激活了activesupport3.1.3,但是您的Gemfile需要activesupport3.0.9。使用bundleex

Ruby - fork、exec、detach ....我们这里有竞争条件吗?

简单的例子,它在我的平台上不起作用(Ruby2.2,Cygwin):#!/usr/bin/rubybacktt=fork{exec('mintty','/usr/bin/zsh','-i')}Process.detach(backtt)exit这个小程序(当从shell启动时)应该跨越一个终端窗口(mintty)然后让我回到shell提示符。但是,虽然它确实创建了mintty窗口,但之后我没有shell提示符,而且我无法在调用shell中键入任何内容。但是当我在分离之前引入一个小的延迟时,无论是使用“sleep”,还是通过在标准输出上打印一些东西,它都会按预期工作:#!/usr/bin

ruby - 在 Ruby 中形成卫生 shell 命令或系统调用

我正在构建一个守护进程来帮助我管理我的服务器。Webmin工作正常,就像打开服务器的shell一样,但我更希望能够从我设计的UI控制服务器操作,并向最终用户公开一些功能。守护进程将从队列中获取Action并执行它们。但是,由于我将接受用户的输入,我想确保不允许他们将危险的东西注入(inject)到特权shell命令中。这里有一个片段可以说明我的问题:defperformsystem"usermod-p#{@options['shadow']}#{@options['username']}"end解释更多的要点:https://gist.github.com/773292我不确定典型的输

ruby - bundle exec 和 require 'bundler/setup' 是否等效?

这些事情完成的是否完全相同?使用bundleexecruby​​foo.rb启动ruby​​进程将require"bundler/setup"作为foo.rb的第一行 最佳答案 在您的特定示例中,它们可以被认为是相同的,但实际上它们并不相同。bundleexec对bundler/setup没有进行的环境进行了一些更改。如果您的foo.rb从不运行子shell,或者从不尝试在子shell中运行其他ruby​​可执行文件,那么这两个版本是等效的(它们都将正确加载bundle的gem并且工作完全相同)。bundleexec的整个想法是让您

ruby - 为什么以及何时使用 shell 而不是 Ruby

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion因为我熟悉Ruby,所以我打算使用它在OSX上编写一些脚本。但后来我想,也许我错过了船。我知道有很多理由更喜欢Ruby而不是Bash(或任何与sh兼容的命令语言解释器),但我不知道有什么理由不这样做。直接对shell进行编程有什么好处?我打算在必要时使用system来利用系统命令。注意:我已经知道Ruby不会一直存在,但我主要对技术、语义和句法标准感兴趣。Ruby并不总是存在,我的意思是它

ruby-on-rails - 当我运行 `bundle exec rake test:prepare` 时它出错了,但是 `bundle exec rake db:test:prepare` 运行正常但有警告。这是怎么回事?

所以根据thislink一个是快捷方式包装器(所以我猜它们是一样的)。当我运行bundleexecrakedb:test:prepare时,我得到了这个错误:Don'tknowhowtobuildtask'test:prepare'/Users/aj/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in`eval'/Users/aj/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hoo

ruby-on-rails - 'bundle exec rake' 与 rake 有什么关系?

做和做有什么区别:bundleexecrake和rake我看到人们都这样做,我从不在我的命令之前做bundle,好奇这是什么原因? 最佳答案 bundleexec在bundle的上下文中执行命令。此命令执行命令,使Gemfile中指定的所有gem可用于Ruby程序中。当您有许多应用程序使用不同版本的gem时非常有用在其中。有关更多信息,请参阅文档:http://gembundler.com/man/bundle-exec.1.html 关于ruby-on-rails-'bundleexe