4

许多 shell 脚本和命令同时支持短选项和长选项,例如

$ ls -a
$ ls --all

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

4

3 回答 3

3

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

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

于 2012-05-27T21:40:18.150 回答
3

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

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

# 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.

于 2012-05-27T21:51:03.617 回答
1

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

于 2012-05-28T00:28:20.920 回答