2

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

我希望我的工具能够像 Git 一样运行,因为您只需安装它,然后运行您只需输入git clonegit commit. 在我看到的许多示例中,这些工具类似于thor foo:bar./foo.rb bar

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

4

2 回答 2

0

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

#!/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 $?

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

现在你可以执行它了:

./mycommand smallcmd1

也可以传递其他参数。

如果将此脚本放入任何$PATH目录中,则可以./像这样省略:

mycommand smallcmd1
于 2013-09-08T04:51:17.180 回答
0

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

  • 包括 ruby​​ shebang 线。
  • 在您的脚本中需要“雷神”。
  • 定义你的 Thor 类。
  • 添加#{YourThorClassname}.start到脚本的底部。

示例:my-cli.rb

#!/usr/bin/env ruby

require "thor"

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

MyCLI.start

使脚本可执行:

chmod a+x my-cli.rb

现在您可以输入:

./my-cli.rb foo

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

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

于 2017-09-19T16:02:33.757 回答