我有一个Ruby文件,我通过
ruby file.rb "parameters"
来运行它。我希望每次运行时只需要输入 regtask parameters
而无需加上ruby
和文件名。我想让它和ls
命令一样方便。应该怎么做呢?编辑您的文件,确保这是第一行,这样您的系统就知道如何执行您的文件:
#!/usr/bin/env ruby
接下来,更改文件权限以使其可执行:
chmod a+x file.rb
mkdir -p ~/bin
mv file.rb ~/bin/regtask
~/bin
添加到PATH
中,如果它存在;如果不存在,则需要在启动文件中手动将其添加到PATH
中。)~/bin
是你的。/usr/local/bin
是为所有用户准备的。两个选项都可以工作,但它们执行不同的任务。 - Amadan这应该会有所帮助... 如果你遇到任何问题,请告诉我。
http://commandercoriander.net/blog/2013/02/16/making-a-ruby-script-executable/
将 Ruby 脚本变成可执行文件
对于 *nix 社区来说,这是常识,但对于许多新开发人员来说,将 Ruby 脚本变成可执行的命令行程序就像魔术一样。虽然互联网上有其他参考资料,但在这篇文章中,我将简要解释如何从直接调用 Ruby 运行 Ruby 脚本,到只需脚本名即可运行脚本。
我们假设有一个简单的 Ruby 脚本,它在命令行上打印 "hello"。我们的脚本名为 greeter.rb
。该文件包含一行 Ruby 代码:
puts "Hello!"`
ruby greeter.rb
。如果只需输入 greeter
即可运行该脚本,那不是很好吗?是的,很好。#!/usr/bin/env ruby
puts "Hello!"
env
命令指定的当前配置版本的Ruby运行我们的文件。想要了解env
如何工作,请在命令行中输入man env
。greeter.rb
文件的目录。现在,要检查权限,请运行:ls -l greeter.rb
-rw-r--r-- 1 username staff 13 Feb 16 21:10 greeter.rb
您自己的用户名将显示在username
的位置,创建日期将自然不同,但除此之外输出几乎相同。该行的第一部分是相关部分。字母r
和w
指定了读取和写入权限。
我们要添加执行权限,它将出现在该行中的一个x上。要添加执行权限,请运行以下命令。
chmod 755 greeter.rb
ls -l greeter.rb
再次检查文件权限,输出应该有所不同。-rwxr-xr-x 1 username staff 13 Feb 16 21:20 greeter.rb
x
的存在表示该文件可以直接运行,无需先调用Ruby。下面的命令应该能让我们的文件输出"hello"。
./greeter.rb
就快完成了。现在,我们只需要去掉前缀./
,这告诉Bash在哪里查找greeter.rb
,也就是在当前目录中。在完成最后一步之前,让我们将文件重命名为greeter
。
mv greeter.rb greeter
ls
,chmod
,mv
等,Bash都会在预定义的文件夹列表中搜索这些程序。这被称为路径。要查看您计算机上设置的路径,请尝试:echo "$PATH"
输出应该是各种系统关键文件夹的长字符串。我们需要将我们的应用程序放到其中一个文件夹中。传统上,最好不要动/usr/bin/
和/bin/
这样的文件夹。相反,任何类型的用户添加都应该放在/usr/local/bin/
中。如果该文件夹不存在,请使用以下命令创建:
mkdir -p /usr/local/bin/
/usr/local/bin/
文件夹中创建一个软链接(或者在 OS X 中称为别名)。要创建别名,我们将使用 ln
命令。从 greeter
存放的目录中,键入以下内容:
ln -s $PWD/greeter /usr/local/bin/
请注意,$PWD
变量将扩展为我们问候语脚本的绝对路径。现在,我们完成了,可以简单地输入 greeter
来调用我们的 Ruby 脚本!man <command>
查找其 man 页面。ln
命令不会创建别名,它会在 OS X 上创建软链接或硬链接。如果你想要创建 Mac OS 别名,需要使用 Finder 的 Option-drag(或使用 osascript
模拟该操作)。具体方法可以参考这个链接:https://dev59.com/sWw05IYBdhLWcg3wuUAL - Amadan
.rb
扩展名,以使文件名更易于键入,但无法摆脱键入文件名。您仍需要将其作为命令名称键入(而不是ruby
命令的参数)。 - sawa