首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby命令行工具命令

Ruby命令行工具命令
EN

Stack Overflow用户
提问于 2013-09-08 02:23:23
回答 2查看 1.3K关注 0票数 2

我计划制作我的第一个命令行工具,并且想知道命名和命令是如何工作的。

我希望我的工具的功能类似于Git,也就是说您只需安装它,然后运行命令,只需输入git clonegit commit即可。在我看到的许多例子中,这些工具都类似于thor foo:bar./foo.rb bar

我的主要问题是,如果我的工具名是Foo,而我的工具中的命令是bar,那么用户所要做的就是在命令行中运行Foo bar

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-08 04:51:17

git clone的情况下,它的工作方式是执行git程序,并将clone作为参数传递给它。因此,如果您有几个应该以类似方式启动的脚本,则可以创建一个小型启动程序。这段代码在bash中(但是脚本是sh兼容的,所以您可以安全地将shebang更改为/bin/sh)。用任何其他语言写同样的东西是很容易的。

代码语言:javascript
复制
#!/bin/bash

command=$1
shift

case $1 in    
    cmd1)
        echo "Executing command #1"
        ./smallcmd1 "$@"
        ;;
    cmd2)
        echo "Executing command $command"
        ./smallcmd2 "$@"
        ;;
    '')
        echo 'No option specified'
        exit 1
        ;;

    *) echo "Invalid option"
        exit 1
        ;;
esac
exit $?

其中smallcmd是您的辅助命令脚本或程序。

现在您可以执行它了:

代码语言:javascript
复制
./mycommand smallcmd1

还可以传递其他参数。

如果将此脚本放置到任何$PATH目录中,则可以省略./,如下所示:

代码语言:javascript
复制
mycommand smallcmd1
票数 0
EN

Stack Overflow用户

发布于 2017-09-19 16:02:33

使用Thor制作一个可执行文件非常简单。你所要做的就是:

  • 包括红宝石线。
  • 在你的剧本里需要“雷神”。
  • 定义你的雷神类。
  • #{YourThorClassname}.start添加到脚本的底部。

示例: my-cli.rb

代码语言:javascript
复制
#!/usr/bin/env ruby

require "thor"

class MyCLI < Thor
  desc "foo", "Prints foo"
  def foo
    puts "foo"
  end
end

MyCLI.start

使脚本可执行:

代码语言:javascript
复制
chmod a+x my-cli.rb

现在您可以键入:

代码语言:javascript
复制
./my-cli.rb foo

您可以在Thor 维基中找到类似的示例和更多的帮助。

您甚至可以将文件重命名为my-cli (没有.rb扩展名),而且由于文件中的ruby,它仍然工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18679786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档