我有一个Ruby文件,我运行它ruby file.rb "parameters".我喜欢运行它,regtask parameters而不必ruby每次都包含和文件名.我希望它与...相同ls.我怎么做到这一点?
Ama*_*dan 14
编辑您的文件,确保这是第一行,因此您的系统知道如何执行您的文件:
#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)
接下来,更改文件的权限以使其可执行:
chmod a+x file.rb
Run Code Online (Sandbox Code Playgroud)
最后,将其重命名并将其移动到将要执行的位置,而不必编写其完整路径:
mkdir -p ~/bin
mv file.rb ~/bin/regtask
Run Code Online (Sandbox Code Playgroud)
(大多数系统将自动添加~/bin到PATH,如果它存在;如果没有,则必须将其添加到PATH自己在你的启动文件.)
这应该会有所帮助..如果您遇到任何问题,请告诉我。
http://commandercoriander.net/blog/2013/02/16/making-a-ruby-script-executable/
使 Ruby 脚本可执行
这是 *nix 社区的常识,但对于许多新开发人员来说,将 Ruby 脚本转换为可执行的命令行程序就像魔术一样。虽然互联网上还有其他参考资料,但对于此处的帖子,我将简要解释如何从直接调用 Ruby 运行 Ruby 脚本,到仅通过脚本名称运行脚本。
我们首先假设我们有一个简单的 Ruby 脚本,它在命令行上打印“hello”。我们的脚本的名称将是greeter.rb. 该文件包含一行 Ruby 代码:
puts "Hello!"`
Run Code Online (Sandbox Code Playgroud)
要运行脚本,我们必须输入ruby greeter.rb。greeter只需键入并仍然让脚本运行不是很好吗?是的,会的。
首先,我们需要告诉 Bash 如何处理我们的文件,因为我们不会直接将脚本传递给 Ruby。为此,我们将以下内容添加到脚本的最顶部:
#!/usr/bin/env ruby
puts "Hello!"
Run Code Online (Sandbox Code Playgroud)
第一行是一个 Bash 指令,主要通过询问命令指定的当前配置的 Ruby 版本来告诉 Bash 使用哪个程序来运行我们的文件env。有关工作原理的更多信息,请尝试在命令行中env输入。man env
其次,我们需要使脚本可执行,这需要更改文件权限。如果文件权限的概念是新概念,请在此处阅读。基本上,文件具有三种类型的权限。它们可以被读取、写入和执行。大多数文件通常一开始只有读取和写入访问权限。由于我们想要执行脚本,因此我们必须授予它执行权限。
只需一个简单的 Bash 命令即可完成此操作。在命令行上,导航到保存该greeter.rb文件的目录。现在,要检查权限,请运行:
ls -l greeter.rb
Run Code Online (Sandbox Code Playgroud)
输出将如下所示:
-rw-r--r-- 1 username staff 13 Feb 16 21:10 greeter.rb
Run Code Online (Sandbox Code Playgroud)
您自己的用户名将显示在 的位置username,并且创建日期自然会不同,但否则输出将几乎相同。该行的第一部分是相关部分。字母r和w指定读取和写入权限。
我们将添加执行权限,该权限将在该行中显示为 x。要添加执行权限,请运行以下命令。
chmod 755 greeter.rb
Run Code Online (Sandbox Code Playgroud)
现在,如果您再次使用 检查文件权限ls -l greeter.rb,输出应该会有所不同。
-rwxr-xr-x 1 username staff 13 Feb 16 21:20 greeter.rb
Run Code Online (Sandbox Code Playgroud)
的存在x表明该文件可以直接运行,而无需先调用Ruby。以下命令应该让我们的文件说“你好”。
./greeter.rb
Run Code Online (Sandbox Code Playgroud)
差不多了。现在,我们只需要去掉前缀./,它告诉 Bash 在哪里查找greeter.rb,即在当前目录中。不过,在完成最后一步之前,让我们将文件重命名为greeter.
mv greeter.rb greeter
Run Code Online (Sandbox Code Playgroud)
现在,进行最后一步。每次我们调用 Bash 程序(例如ls、chmod、mv等)时,Bash 都会搜索预定义的文件夹列表来查找这些程序。这称为路径。要查看计算机上的路径设置,请尝试:
echo "$PATH"
Run Code Online (Sandbox Code Playgroud)
输出应该是一长串各种系统关键文件夹。我们需要将我们的应用程序放入这些文件夹之一。传统上,最好将文件夹/usr/bin/和文件夹/bin/单独放置。相反,任何类型的用户添加都应该放在/usr/local/bin/. 如果该文件夹不存在,请使用以下命令创建它:
mkdir -p /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
现在,我们可以将欢迎程序移动到该文件夹中,或者将应用程序保留在原来的位置,然后在该文件夹中创建一个软链接(或 OS X 术语中的别名)/usr/local/bin/。要创建别名,我们将使用该ln命令。从所在目录greeter,输入:
ln -s $PWD/greeter /usr/local/bin/
请注意,该$PWD变量将扩展到我们的欢迎脚本的绝对路径。现在,我们已经完成了,我们可以简单地输入greeter来调用我们的 Ruby 脚本!
作为脚注,如果上述任何 Bash 命令看起来令人困惑,请尝试通过键入 来查找其手册页man <command>。
| 归档时间: |
|
| 查看次数: |
6650 次 |
| 最近记录: |