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

See*_*nnn 2 ruby macos terminal

我刚刚开始阅读Well-Grounded Rubyist,我刚开始在我的Mac终端上使用Ruby.

我正在上第一课,在文本编辑器中创建一个Celsius到Farenheit转换器.我已经使用Textmate(我的文本编辑器)将代码保存为.rb文件.文件名是c2f.rb. 该文件保存在桌面上名为"Rubycode"的文件夹中.

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

cd /Users/rexrose/Desktop/Rubycode/c2f
Run Code Online (Sandbox Code Playgroud)

和许多其他人.

有什么想法,我应该输入终端才能调用c2f文件?

提前致谢.

7st*_*tud 6

我刚开始阅读Well-Ground的Rubyist.

这是一本非常好的书.我认为它更像是一本中级水平的书,而不是初学者的书,但无论如何.

我尝试了很多尝试调用文件的方法,包括使用

cd /Users/rexrose/Desktop/Rubycode/c2f
Run Code Online (Sandbox Code Playgroud)

cd命令意味着"更改目录",您无法将目录更改为文件.相反,您必须将目录更改为包含该文件的目录:

$ cd /Users/rexrose/Desktop/Rubycode
Run Code Online (Sandbox Code Playgroud)

然后你可以执行文件c2f.rb中包含的程序,如下所示:

$ ruby c2f.rb
Run Code Online (Sandbox Code Playgroud)

以下是一些终端提示:

1)您可以使用~而不是/Users/YourUserName,因此您可以通过执行以下操作来保存一些输入:

$ cd ~/Desktop/Rubycode
Run Code Online (Sandbox Code Playgroud)

键入'〜'而不是'/ Users/YourUserName'将成为第二天性.

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

$ cd
Run Code Online (Sandbox Code Playgroud)

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

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

$ cd
$ ls -al
Run Code Online (Sandbox Code Playgroud)

该命令ls -al将显示目录中的所有文件,包括隐藏文件,这些文件的名称以a开头..如果.bash_profile存在名为的文件,请将其打开; 如果它不存在,请创建它.把它放进去.bash_profile:

PS1="\w$ "
Run Code Online (Sandbox Code Playgroud)

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

$ source .bash_profile
Run Code Online (Sandbox Code Playgroud)

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

您还可以将"别名"添加到.bash_profile.例如,在我的.bash_profile中,我有'ruby'的别名'r',所以我可以执行这样的ruby程序:

$ r my_program.rb
Run Code Online (Sandbox Code Playgroud)

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

alias r="ruby"
Run Code Online (Sandbox Code Playgroud)

4)终端中的标签完成:

您可能已经注意到可以键入文件名的一部分,然后单击选项卡,终端将完成文件名.使用tab完成,我可以像这样执行我的ruby程序:

$ r my_pr<tab>
Run Code Online (Sandbox Code Playgroud)

事实上,我将我的练习ruby程序命名为我可以使用Tab完成效果最大化.我有名为1.rb,2.rb,3.rb的文件,然后我只需输入以下内容即可执行其中一个:

$ r 1<tab>
Run Code Online (Sandbox Code Playgroud)

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

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

$ cd /Use<tab>/YourUser<tab>/di<tab>/di<tab>
Run Code Online (Sandbox Code Playgroud)

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

5)因为您可能会在一段时间内使用Terminal作为主要的ruby程序,所以您可以设置一些东西,以便Terminal在您的目录Users/rexrose/Desktop/Rubycode中自动打开.把它放在.bash_profile中:

cd "/Users/rexrose/Desktop/Rubycode"  (Here you cannot use ~)
Run Code Online (Sandbox Code Playgroud)

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

$ cd /Library/SomeLongName/AnotherLongName34832o222/142582dir/some_file.txt
Run Code Online (Sandbox Code Playgroud)

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

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

~$ mkdir ruby_programs
~$ cd ruby_programs
~/ruby_programs$ mate 1.rb
Run Code Online (Sandbox Code Playgroud)