许多shell脚本和命令都支持短期和长期选项,例如:
$ ls -a
$ ls --all
但我只是不明白为什么。为什么人们更喜欢长到短的选项,为什么我应该支持两者(当实现我自己的脚本时)。
答案 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)
如果您需要的选项数量超过可打印字符数,那么您需要很长的选项。它是关于与人类的互动,两种方式都有利有弊。