繁体   English   中英

如何将Ruby脚本制作为bash命令?

[英]How do I make a Ruby script into a bash command?

我有一个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 。)

这应该有帮助。如果您遇到任何问题,请告诉我。

http://commandercoriander.net/blog/2013/02/16/making-a-ruby-script-executable/

使Ruby脚本可执行

这是* nix社区中的常识,但是对于许多新开发人员而言,将Ruby脚本转换为可执行的命令行程序就像魔术一样。 尽管Internet上还有其他参考,但对于此处的帖子,我将简要说明如何从直接调用Ruby运行Ruby脚本到仅按其名称运行脚本。

我们首先假设我们有一个简单的Ruby脚本,该脚本在命令行上显示“ hello”。 我们的脚本名称将为greeter.rb 该文件包含一行Ruby代码:

puts "Hello!"`

要运行脚本,我们必须输入ruby greeter.rb 只输入greeter并仍然运行脚本会不会很好呢? 是的,会的。

首先,我们需要告诉Bash如何处理文件,因为我们不会直接将脚本传递给Ruby。 为此,我们将以下内容添加到脚本的最上方:

#!/usr/bin/env ruby
puts "Hello!"

第一行是Bash指令,它通过询问env命令指定的Ruby当前配置版本,基本上告诉Bash运行文件的程序。 有关env工作原理的更多信息,请尝试在命令行中输入man env

其次,我们需要使脚本可执行,这需要更改文件权限。 如果文件权限的概念是新概念,请在此处阅读。 基本上,文件具有三种类型的权限。 它们可以被读取,写入和执行。 大多数文件通常以仅具有读取和写入访问权限开始。 由于我们要执行脚本,因此我们将不得不授予其执行权限。

这样做只是一个简单的Bash命令。 在命令行上,导航到包含greeter.rb文件的目录。 现在,要检查权限,请运行:

ls -l greeter.rb

输出将如下所示:

-rw-r--r--    1 username  staff   13 Feb 16  21:10 greeter.rb

您自己的用户名将显示在username的位置,并且创建日期自然会有所不同,但否则输出将几乎相同。 该行的第一部分是启示性的部分。 字母rw指定读取和写入权限。

我们将添加执行权限,该权限将在该行中显示为x。 要添加执行权限,请运行以下命令。

chmod 755 greeter.rb

现在,如果您使用ls -l greeter.rb再次检查文件权限,则输出应该有所不同。

-rwxr-xr-x  1 username  staff     13 Feb 16 21:20 greeter.rb

x的存在指示文件可以直接运行而无需先调用Ruby。 以下命令应使我们的文件说“你好”。

./greeter.rb

差不多好了。 现在,我们只需要删除前缀./ ,该前缀告诉Bash在当前目录中寻找greeter.rb 不过,在完成最后一步之前,让我们将文件重命名为greeter

mv greeter.rb greeter

现在,最后一步。 每次我们调用Bash程序(例如lschmodmv等)时,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脚本的绝对路径。 现在,我们完成了,我们可以简单地键入greeter来调用我们的Ruby脚本!

作为注脚,如果上述Bash命令中的任何一个看起来令人困惑,请尝试通过键入man <command>查找其手册页。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM