除了短期期权,我还应该提供长期期权?

时间:2012-05-27 21:35:42

标签: bash command-line-arguments

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

$ ls -a
$ ls --all

但我只是不明白为什么。为什么人们更喜欢长到短的选项,为什么我应该支持两者(当实现我自己的脚本时)。

3 个答案:

答案 0 :(得分:3)

我认为它在历史上有所增长。短选项更容易实现,因为您只需检查单个字符,但在可能的选项数量方面受到限制。长选项也更具描述性。

在自己实现这两个方面,大多数库使得同时实现这两个库变得容易,而基本上没有其他代码。我倾向于使用长选项,因为它们更具描述性,但这纯粹是一种偏好。

答案 1 :(得分: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

答案 2 :(得分:1)

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