【问题标题】:How do I run a Ruby script created in text editor in the Mac OS Terminal?如何在 Mac OS 终端中运行在文本编辑器中创建的 Ruby 脚本?
【发布时间】:2013-08-04 01:50:32
【问题描述】:

我刚刚开始阅读 Well-Grounded Rubyist,并且我刚刚开始在我的 Mac 终端中使用 Ruby。

我正在上第一课,在文本编辑器中创建摄氏到华氏转换器。我使用 Textmate(我的文本编辑器)将代码保存为 .rb 文件。文件名为 c2f.rb。该文件保存在我桌面上名为“Rubycode”的文件夹中。

但是,我在终端中运行 .rb 文件时遇到了困难。我尝试了许多不同的方法来尝试调用该文件,包括使用:

cd /Users/rexrose/Desktop/Rubycode/c2f

还有很多其他的。

关于我应该在终端中输入什么来调用 c2f 文件有什么想法吗?

提前致谢。

【问题讨论】:

  • @LoïcFaure-Lacroix:你应该这样回答。

标签: ruby macos terminal


【解决方案1】:

我刚开始阅读 Well-Grounded Rubyist。

这是一本非常好的书。我认为它更像是一本中级书而不是初学者书,但没关系。

我尝试了许多不同的方法来尝试调用该文件, 包括使用

cd /Users/rexrose/Desktop/Rubycode/c2f

cd 命令表示“更改目录”,您不能将目录更改为文件。相反,您必须将目录更改为包含该文件的目录:

$ cd /Users/rexrose/Desktop/Rubycode

然后您可以像这样执行文件 c2f.rb 中包含的程序:

$ ruby c2f.rb

以下是一些终端提示:

1) 您可以使用~ 代替/Users/YourUserName,这样您就可以节省一些打字时间:

$ cd ~/Desktop/Rubycode

键入“~”而不是“/Users/YourUserName”将成为第二天性。

2) 使用不带参数的 cd 命令:

$ cd

会将您带到您的主目录,即 /Users/YourUserName

3) 您应该更改提示以指明您当前所在的目录。为此,请在您的主目录 (/Users/YourUserName) 中创建一个名为 .bash_profile 的文件。先检查是否存在:

$ cd
$ ls -al

命令ls -al 将显示目录中的所有文件,包括隐藏文件,即名称以. 开头的文件。如果存在名为.bash_profile 的文件,则打开它;如果它不存在,则创建它。把这个放在.bash_profile:

PS1="\w$ "

要让终端识别更改,您可以退出终端并重新启动它,或者执行以下操作:

$ source .bash_profile

然后打开一个新的终端寡妇。

您还可以将“别名”添加到 .bash_profile。例如,在我的 .bash_profile 中,我有一个别名 'r' 代表 'ruby',这样我就可以像这样执行一个 ruby​​ 程序:

$ r my_program.rb

在 .bash_profile 中,你可以创建一个这样的别名:

alias r="ruby"

4) 终端中的 Tab 补全:

您可能已经注意到,您可以键入文件名的一部分,然后按 Tab 键,终端将完成文件名。使用制表符完成,我可以像这样执行我的 ruby​​ 程序:

$ r my_pr<tab>

事实上,我将我的练习 ruby​​ 程序命名为这样可以最大程度地使用制表符补全。我有名为 1.rb、2.rb、3.rb 的文件,然后我只需键入以下内容即可执行其中一个:

$ r 1<tab>

事实上,您甚至可能不必输入!如果您按键盘上的向上箭头键,终端将显示上一个命令,如果您再次按向上箭头键,您将看到之前的命令。因此,您可以向上滚动到上一个命令,然后按回车键执行它——无需输入任何内容。

您应该努力为路径中的每个文件名使用制表符完成。例如,如果你正在 cd'ing 到 /Users/YourUserName/dir1/dir2,你应该这样做:

$ cd /Use<tab>/YourUser<tab>/di<tab>/di<tab>

您应该为每个文件名使用制表符完成的原因(顺便说一下,在 Unix 中 filename 是目录名和文件名的通用术语)是因为当名称不会制表符完成时,那么您在错误的目录,或者您正在尝试该目录中不存在的文件名。因此,不必输入整个路径 '/Users/YourUserName/dir1/dir2' 然后在点击返回时找出错误,选项卡完成会在出现错误时立即通知您(因为文件名赢了't tab complete)--节省一些打字时间。

5) 因为您可能会在一段时间内将终端用于大部分 ruby​​ 程序,所以您可以设置一些东西,以便终端自动在您的目录 Users/rexrose/Desktop/Rubycode 中打开。把它放在 .bash_profile 中:

cd "/Users/rexrose/Desktop/Rubycode"  (Here you cannot use ~)

6) 有时,您可能需要在命令行中键入计算机上存在的长文件名:

$ cd /Library/SomeLongName/AnotherLongName34832o222/142582dir/some_file.txt

您可以先在 Finder 中找到文件,而不必在命令行中键入所有内容。然后,如果你将文件拖到终端窗口,文件名将在光标处输入。

最后,组织文件的更好方法可能是将它们放在主目录下的目录中,如下所示:

~$ mkdir ruby_programs
~$ cd ruby_programs
~/ruby_programs$ mate 1.rb

【讨论】:

    【解决方案2】:

    第一件事:cd 代表“更改目录”。

    通常终端应该在“~”中打开,这是你大部分东西所在的主目录。在 OS X 中,它将是 /Users/[username]。也有可能在 OS X 中,它会保存最后一个会话的位置。我还推荐,因为你开始安装,“Iterm2”,这是一个很好的终端使用。它支持多个选项卡等。

    解释器Ruby 是命令“ruby”。要调用脚本,您必须使用文件名调用 Ruby:

    ruby /Users/rexrose/Desktop/Rubycode/c2f/c2f.rb
    

    这几乎相当于:

    cd /Users/rexrose/Desktop/Rubycode/c2f/
    ruby c2f.rb
    

    它几乎是等价的,但现在不应该打扰你。假设第二种调用脚本的方式比第一种更有利。

    现在,第二件事:如果你想在 Ruby 中尝试一些东西,你可以启动一个交互式 shell。命令是“irb”。

    键入irbEnter,然后您可以键入Ruby 代码。如果要离开,请多次按CTRL+C

    最后一点,我推荐installing "RVM"。我希望它会节省你的时间和痛苦。如果你想安装 Ruby gems,它不会与系统中已经存在的 Ruby 混淆。这是我个人的看法,但我相信很多人会同意。即使 Ruby 随 OS X 一起提供,您也应该安装不同的 Ruby 进行开发。它将确保如果开发中出现问题,它不会弄乱 Ruby OS X 可能正在使用的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-01
      • 2014-07-25
      • 2015-08-09
      • 2022-06-11
      • 2020-10-23
      • 2020-04-01
      • 1970-01-01
      • 2019-09-23
      相关资源
      最近更新 更多