原文来自: http://blackanger.blog.51cto.com/140924/43730
碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法
1.Exec方法
Kernel#exec方法通过调用指定的命令取代当前进程:
>>exec 'echo "hello $HOSTNAME"'
hello nate.local
值得注意的是,exec方法用echo命令来取代了irb进程从而退出了irb。主要的缺点是,你无法从你的ruby脚本里知道这个命令是成功还是失败。
2.System方法
Kernel#system方法操作命令同上, 但是它是运行一个子shell来避免覆盖当前进程。如果命令执行成功则返回true,否则返回false。
>> system 'echo "hello $HOSTNAME"'
hello nate.local
=> true
>> system 'false'
=> false
>> puts $?
256
=> nil
>>
3.反引号(Backticks,Esc键下面那个键)
$ irb
>> today = `date`
=> "Mon Mar 12 18:15:35 PDT 2007n"
>> $?
=> #<Process::Status: pid=25827,exited(0)>
>> $?.to_i
=> 0
这种方法是最普遍的用法了。它也是运行在一个子shell中。
4.IO#popen
$ irb
>> IO.popen("date") { |f| puts f.gets }
Mon Mar 12 18:58:56 PDT 2007
=> nil
5.open3#popen3
$ irb
>> stdin, stdout, stderr = Open3.popen3('dc')
=> [#<IO:0x6e5474>, #<IO:0x6e5438>, #<IO:0x6e53d4>]
>> stdin.puts(5)
=> nil
>> stdin.puts(10)
=> nil
>> stdin.puts("+")
=> nil
>> stdin.puts("p")
=> nil
>> stdout.gets
=> "15n"
6.Open4#popen4
$ irb
>> require "open4"
=> true
>> pid, stdin, stdout, stderr = Open4::popen4 "false"
=> [26327, #<IO:0x6dff24>, #<IO:0x6dfee8>, #<IO:0x6dfe84>]
>> $?
=> nil
>> pid
=> 26327
>> ignored, status = Process::waitpid2 pid
=> [26327, #<Process::Status: pid=26327,exited(1)>]
>> status.to_i
=> 256
分享到:
相关推荐
碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法: Kernel#exec方法通过调用指定的命令取代当前进程例子: 代码如下: $ irb >> exec ‘echo “hello $HOSTNAME”‘ ...
在Ruby中,执行shell命令是一件不奇怪的事情,Ruby提供了大概6种方法供开发者进行实现。这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。 exec exec会将指定的命令替换掉当前进程中的操作,...
总的来说,这个Rack中间件是用Ruby编写的一个工具,用于监控和报告应用程序的健康状况,它可能结合了Shell命令执行和内部状态检查,为运维人员提供了一种快速评估系统运行状态的方式。如果你在运行基于Rack的应用...
首先,`RedisStatusExporteryh.rb`可能是用Ruby编写的脚本,它的主要任务是连接到Redis服务器,执行Keyspace扫描(可能使用`KEYS`或`SCAN`命令,考虑到性能问题,更倾向于使用非阻塞的`SCAN`),筛选出匹配前缀的Key...
wisepdf将Ruby代码与这个命令行工具结合,提供了一个简洁的API来调用转换过程。 2. **安装** 要在项目中使用wisepdf,首先确保你的系统上已经安装了wkhtmltopdf。可以在其官方网站上找到对应操作系统的安装指南。...
10. **sudo和su命令**:在远程执行命令时,可能需要提升权限,sudo用于以其他用户身份运行命令,su则用于切换用户。 11. **日志记录和错误处理**:在远程调用命令时,正确记录日志和处理异常非常重要,这有助于排查...
2. **Shell脚本**:在Ruby中,可以使用`sh`或者`system`等方法来执行Shell命令,这使得Ruby成为编写系统管理脚本的有效工具。 3. **Alexa API**:如果项目是围绕Alexa网络信息服务,那么开发者可能使用了Alexa的API...
3. **环境变量管理**:可以通过库提供的方法设置环境变量,影响命令的执行环境。 4. **输出和错误处理**:Cocaine可以捕获命令的输出和错误,这在需要处理命令返回结果或检查错误时非常有用。 5. **超时控制**:...
- **无需编译**:Ruby是一种解释型语言,这意味着它的程序可以在编写后直接运行,而无需预先编译成机器代码。 - **即时结果**:这种特性使得开发者能够快速测试和验证代码逻辑,极大地提高了开发效率。 ##### 2. ...
Ruby IRB(Interactive Ruby)是Ruby语言的标准交互式shell,允许开发者在运行时测试代码、探索类库和调试程序。然而,IRB本身的功能相对基础,对于一些高级的开发需求可能显得不够用。这就是irbtools的出现,它为...
在Ruby中,可以使用反引号(``` `` ```)来进行命令替换,即执行shell命令并获取其输出结果。 **6.3 赋值运算符** 赋值运算符用于将值赋给变量。 **6.4 并行赋值** Ruby支持并行赋值,即在一个赋值语句中同时给多...
可以在命令行中执行shell命令并获取其输出。 ```ruby output = `ls` ``` **6.3 赋值运算符** 用于将值赋给变量。 ```ruby x = 10 ``` **6.4 并行赋值** 可以同时为多个变量赋值。 ```ruby a, b = 1, 2 ``` *...
6. **关闭客户端**:在程序结束时,调用`stop`方法关闭客户端,释放资源。 ```ruby client.stop ``` **应用场景:** - **微服务监控**:在分布式系统中,每个服务可以使用此客户端发送其特有的指标和事件。 - **...
Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第... 您可能感兴趣的文章:Ruby面向对象编程详解Ruby中调用执行shell命令的6种方法优化Ruby代码使程序运行速度提高的例子
- **元编程能力**:Ruby允许在运行时定义方法和修改代码结构。 - **可扩展性**:Ruby可以通过C语言编写扩展模块来增强功能。 - **强大的标准库**:Ruby拥有一个强大的标准库,支持多种编程任务。 #### 参考资料 - ...
守望者- V0.9 同时在多台机器上(从Ruby)安全地运行SSH命令。 受到启发,并与Ruby 1.8、1.9和JRuby 1.3+兼容! ... 通过调用Rye :: Box对象上的方法来执行Shell命令。 rbox = Rye :: Box . ne
0×01 ASP环境下运行命令的方法: 在ASP中运行命令,通常需要检查服务器上是否支持所需组件,如WScript.Shell和WScript.Network。如果这些组件被禁用,可以通过创建ActiveXObject来尝试绕过限制。示例代码展示了如何...
在IRB环境中可以执行Ruby代码并立即看到结果,这对于调试和学习非常有帮助。 ### Ruby Gems Gems是Ruby中的包管理系统,类似于Python的pip或Node.js的npm。它可以用来安装、更新或卸载Ruby库。例如,安装一个名为`...
根据提供的文档信息,本文将详细解释“第六十八课:基于Ruby内存加载shellcode第一季”中的关键知识点。主要内容包括理解shellcode的概念、如何利用Ruby语言生成shellcode以及如何在内存中加载并执行shellcode。 ##...