如何将 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 上还有其他参考资料,但对于此处的 post,我将简要说明如何通过直接调用 Ruby 从 运行 宁 Ruby 脚本,到 运行仅通过脚本名称来调用脚本。
我们首先假设我们有一个简单的 Ruby 脚本,它在命令行上打印 "hello"。我们的脚本名称将是 greeter.rb
。该文件包含一行 Ruby 代码:
puts "Hello!"`
要运行脚本,我们必须输入ruby greeter.rb
。只键入 greeter
而仍然将脚本发送到 运行 不是很好吗?是的,会的。
首先,我们需要告诉 Bash 如何处理我们的文件,因为我们不会将脚本直接传递给 Ruby。为此,我们将以下内容添加到脚本的最顶部:
#!/usr/bin/env ruby
puts "Hello!"
第一行是 Bash 指令,通过询问指定的 Ruby 的当前配置版本,基本上告诉 Bash 使用什么程序 运行 我们的文件通过 env
命令。有关 env
工作原理的更多信息,请尝试在命令行中输入 man env
。
其次,我们需要使我们的脚本可执行,这需要更改文件权限。如果文件权限的概念是新的,请在此处阅读。基本上,文件具有三种类型的权限。它们可以被读取、写入和执行。大多数文件一开始通常只有读写权限。由于我们要执行我们的脚本,我们将不得不授予它执行权限。
这样做只是一个简单的 Bash 命令。在命令行上,导航到包含 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
现在,进行最后一步。每次我们调用 Bash 程序时,例如 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 脚本!
作为脚注,如果上述 Bash 命令中的任何一个看起来令人困惑,请尝试通过键入 man <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 上还有其他参考资料,但对于此处的 post,我将简要说明如何通过直接调用 Ruby 从 运行 宁 Ruby 脚本,到 运行仅通过脚本名称来调用脚本。
我们首先假设我们有一个简单的 Ruby 脚本,它在命令行上打印 "hello"。我们的脚本名称将是 greeter.rb
。该文件包含一行 Ruby 代码:
puts "Hello!"`
要运行脚本,我们必须输入ruby greeter.rb
。只键入 greeter
而仍然将脚本发送到 运行 不是很好吗?是的,会的。
首先,我们需要告诉 Bash 如何处理我们的文件,因为我们不会将脚本直接传递给 Ruby。为此,我们将以下内容添加到脚本的最顶部:
#!/usr/bin/env ruby
puts "Hello!"
第一行是 Bash 指令,通过询问指定的 Ruby 的当前配置版本,基本上告诉 Bash 使用什么程序 运行 我们的文件通过 env
命令。有关 env
工作原理的更多信息,请尝试在命令行中输入 man env
。
其次,我们需要使我们的脚本可执行,这需要更改文件权限。如果文件权限的概念是新的,请在此处阅读。基本上,文件具有三种类型的权限。它们可以被读取、写入和执行。大多数文件一开始通常只有读写权限。由于我们要执行我们的脚本,我们将不得不授予它执行权限。
这样做只是一个简单的 Bash 命令。在命令行上,导航到包含 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
现在,进行最后一步。每次我们调用 Bash 程序时,例如 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 脚本!
作为脚注,如果上述 Bash 命令中的任何一个看起来令人困惑,请尝试通过键入 man <command>
.