【问题标题】:Why should I supply long options in addition to short options?除了空头期权,我为什么还要提供多头期权?
【发布时间】:2012-06-02 09:30:03
【问题描述】:

很多 shell 脚本和命令都支持短选项和长选项,例如

$ ls -a
$ ls --all

但我就是不明白为什么。为什么一个人更喜欢长而不是短选项,为什么我应该同时支持两者(在实现我自己的脚本时)。

【问题讨论】:

  • 如果您使用更长的选项,代码新手会更清楚您在做什么 - 我承认在这种情况下可能不是。为什么要使用空头期权?只剩下 3 个字符了。

标签: bash command-line-arguments


【解决方案1】:

我想它是历史性的。短选项更容易实现,因为您只需检查单个字符,但可能的选项数量有限。长选项也更具描述性。

就自己实现这两个方面而言,大多数库都可以轻松地同时实现这两个,基本上不需要额外的代码。我倾向于使用长选项,因为它们更具描述性,但这纯粹是一个偏好问题。

【讨论】:

    【解决方案2】:

    为什么有人更喜欢做多做空?

    长选项可以让您更清楚地了解您在做什么,并且可以让新用户充满信心,同时让没有经验的用户更容易理解您在做什么。例如,您可能不会运行:

    # DO NOT DO THIS PLEASE PLEASE
    rm / --no-preserve-root --force --recursive
    

    但你可能会跑:

    # DO NOT DO THIS PLEASE PLEASE
    rm -rf / --no-preserve-root
    

    如果他们不明白它的确切含义。

    它还可以用来确保用户绝对想要他们正在做的事情,就像上面的--no-preserve-root 一样,并防止错误输入可能导致灾难性结果的命令。

    为什么我要同时支持两者?

    嗯,因为每个人都这样做。这是一件历史性的事情,到目前为止,许多用户已经开始期待它。像 getopt 这样的库会为你做这件事,所以我认为没有充分的理由不植入它。

    奖励:为什么有人更喜欢做空?

    另一个我经常得到的问题是为什么有人想要从短到长——毕竟,长选项不是更干净吗?是的,但是更有经验的人会对此感到愤怒。输入git commit -a -m 'message' 比输入git commit --add --message 'message' 快得多。一些库还允许你链接短命令,所以command --long --another-long 可以变成command -la

    【讨论】:

      【解决方案3】:

      如果您需要的选项数量多于可打印字符的数量,那么您需要长选项。这是关于与人类的互动,这两种方式各有利弊。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-05
        • 2019-04-20
        • 2021-11-03
        • 2021-03-27
        • 2020-07-26
        • 2023-03-03
        • 1970-01-01
        相关资源
        最近更新 更多