如何在终端中执行 Ruby 脚本?

Posted

技术标签:

【中文标题】如何在终端中执行 Ruby 脚本?【英文标题】:How to execute a Ruby script in Terminal? 【发布时间】:2012-02-02 00:43:10 【问题描述】:

我已经在我的 Mac 上设置了所有我需要的东西(Ruby、Rails、Homebrew、Git 等),我什至还编写了一个小程序。现在,我如何在终端中执行它?我在Redcar中编写了程序并将其保存为.rb,但我不知道如何通过终端执行它。我想运行程序,看看它是否真的有效。我该怎么做呢?

【问题讨论】:

我不知道谁否决了你的第一个问题,但我认为这很苛刻,所以我投了赞成票。祝你一切顺利,起初一切似乎很混乱,但坚持下去,不久它就会成为第二天性,然后你就会在这里帮助其他人。 快进到 2017 年,现在 OP 有 2,555 分和 100 多个徽章。 :) 再跳 3 年,他有 7,875 分和 120 多个徽章! 【参考方案1】:

只需拨打:ruby your_program.rb

使用#!/usr/bin/env ruby 启动您的程序, 通过运行chmod +x your_program.rb 使您的文件可执行 然后做./your_program.rb some_param

【讨论】:

当我调用 ruby​​ your_program.rb 时,我得到这个: ruby​​: No such file or directory -- testapp.rb (LoadError) @TomMaxwell 当他说ruby your_program.rb 时,您应该用您的程序名称替换“your_program.rb”。在这种情况下,根据您的错误消息,它可能应该是ruby testapp.rb。尽管@Robin 是正确的,因为您需要与 Ruby 文件位于同一目录中。 我认为他做到了,否则错误消息不会是关于 testapp.rb 的。但是根据他的其他cmets,他不知道如何cd到他的桌面目录,所以一定是这样。 如果.rb文件中有一些require呢? @Chris Page,我实际上使用第一种方式遇到了这个问题。我按照您的建议更改了 mod 并且成功了!非常感谢!【参考方案2】:

打开终端并打开保存文件的文件夹。 前/home/User1/program/test.rb

    打开终端 cd /home/User1/program ruby test.rb

格式或 test.rb

class Test 
  def initialize
   puts "I love India"
  end
end

# initialize object
Test.new

输出

I love India

【讨论】:

Class 应该是 class(具有较低的 c)。否则将无法正常工作。 喜欢输出??【参考方案3】:

假设 ruby​​ 解释器在您的 PATH 中(应该是),您只需运行

ruby your_file.rb

【讨论】:

这给了我一条错误消息,所以我猜我在设置过程中做错了什么。我该怎么做? ruby: 没有这样的文件或目录 -- testapp.rb (LoadError) 什么是 testapp.rb?你和它在同一个目录吗? 我认为你所说的 ruby​​ 解释器在我的 PATH 中是问题所在。我可能没有正确地做某事;我花了很多时间来搞定一切。 cd 是更改当前目录的终端命令。例如,要转到 HOME_DIR 中的“桌面”目录,您必须执行 cd ~/Desktop【参考方案4】:

调用 ruby​​ 文件使用:ruby your_program.rb

要将您的 ruby​​ 文件作为脚本执行:

    使用#!/usr/bin/env ruby启动您的程序

    使用./your_program.rb param运行该脚本

    如果您无法执行此脚本,请检查文件的权限。

【讨论】:

一般要执行脚本,需要赋予执行权限。如果没有给出,它将无法与上述命令一起使用。检查您的权限,然后使用相同的命令。【参考方案5】:

如果解释器在您的 $PATH 变量中,只需在终端中调用 ruby XXXXX.rb

(这几乎不可能是 Rails 的东西,除非你让它运行。)

【讨论】:

【参考方案6】:

对于那些没有得到旧答案解决方案的人,我只是将我的文件名放在我的代码中的第一行。

像这样

 #ruby_file_name_here.rb

 puts "hello world"

【讨论】:

【参考方案7】:

虽然回答这个问题已经来不及了,但是对于那些像我一样来到这里看到相同问题的解决方案并且在此页面上没有得到满意答案的人来说,原因是你没有以 .rb 扩展名的形式保存您的文件。您很可能在简单文本模式下拥有它。让我详细说明。 在页面上绑定整个解决方案,开始吧(假设您的文件名是 abc.rb 或至少您创建了 abc):

在终端窗口中输入:

cd ~/to/the/program/location
ruby abc.rb

你就完成了

如果出现以下错误

ruby: No such file or directory -- abc.rb (LoadError)

然后转到你有abc文件的目录,将其重命名为abc.rb 关闭 gedit 并重新打开文件 abc.rb。应用相同的命令集并成功!

【讨论】:

【参考方案8】:

打开终端

cd to/the/program/location
ruby program.rb

或者在你的程序的第一个添加#!/usr/bin/env ruby(脚本告诉这是使用Ruby解释器执行的)

打开终端

cd to/the/program/location
chmod 777 program.rb
./program.rb

【讨论】:

【参考方案9】:

如果有人试图在 RAILS 环境中运行脚本, rails 提供了一个运行器,可以通过

在 rails 上下文中执行脚本

rails runner my_script.rb

更多细节在这里: https://guides.rubyonrails.org/command_line.html#rails-runner

【讨论】:

以上是关于如何在终端中执行 Ruby 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Unity中执行Python脚本后让其终端自行关闭

如何通过Rails控制台在Digital Ocean上写入权限来执行Ruby脚本?

HBase中如何执行Ruby

如何从 Ubuntu 中的启动终端执行脚本正确启动脚本?

执行远程 Apache Pig 脚本时如何查看终端日志

如何编写将在 Linux 终端上执行命令的 Lua 脚本?