如何在Mac OS终端中运行在文本编辑器中创建的Ruby脚本?

3
我刚开始阅读《Ruby基础教程》,并且在我的Mac终端上开始使用Ruby。我正在学习第一课,用文本编辑器创建一个摄氏度转华氏度的转换器。我使用Textmate(我的文本编辑器)将代码保存为.rb文件。文件名为c2f.rb。该文件保存在桌面上一个名为“Rubycode”的文件夹中。
然而,我在终端中运行.rb文件时遇到了困难。我尝试了许多不同的方法来调用文件,包括使用:
cd /Users/rexrose/Desktop/Rubycode/c2f

以及其他许多。

你有什么想法,我应该在终端中键入什么才能调用c2f文件吗?

谢谢您提前。


@LoïcFaure-Lacroix:你应该把那个变成一个答案。 - Borodin
2个回答

7

我刚开始阅读《Well-Grounded Rubyist》。

这是一本非常好的书。我认为它更适合中级读者而不是初学者,但无论如何。

I've tried many different methods of trying to call the file, including using

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键,终端将自动完成文件名。使用标签补全功能,我可以像这样执行我的ruby程序:

$ r my_pr<tab>

实际上,我把我的练习程序命名为ruby programs,这样我可以最大限度地使用Tab键自动完成功能。 我有1.rb,2.rb,3.rb等文件,然后我只需键入一个文件名即可执行其中之一:

$ r 1<tab>

实际上,您甚至无需输入命令!如果您按键盘上的向上箭头键,终端将显示先前的命令,如果您再次按向上箭头键,则会看到之前的命令。因此,您可以向上滚动到以前的命令,然后按回车键执行它-而无需输入任何内容。

对于路径中的每个文件名,您应该尽量使用选项卡完成功能。例如,如果您要cd到/Users/YourUserName/dir1/dir2,则应执行以下操作:

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

你应该为每个文件名使用tab补全(顺便说一下,在Unix中,filename是指目录名称和文件名称的通用术语),因为当名称无法进行tab补全时,你可能处于错误的目录或者正在尝试一个不存在于该目录中的文件名。因此,使用tab补全可以让你立即知道是否存在错误(因为文件名无法进行tab补全),从而节省了一些打字时间,而不必在按回车键后才发现错误并需要输入整个路径“/Users/YourUserName/dir1/dir2”。
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

1
首先:"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”。

键入irb并按Enter,然后可以输入Ruby代码。如果要离开,请多次按CTRL+C

最后一件事,我建议安装“RVM”。我希望它能为您节省时间和痛苦。如果要安装Ruby gem,则不会影响系统已有的Ruby。这是我的个人意见,但我相信很多人会同意。即使Ruby随OS X一起提供,您也应该安装不同的Ruby进行开发。这将确保如果开发中出现问题,不会影响可能正在使用的Ruby OS X。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接