许多 shell 脚本和命令同时支持短选项和长选项,例如
$ ls -a
$ ls --all
但我就是不明白为什么。为什么一个人更喜欢长而不是短选项,为什么我应该同时支持两者(在实现我自己的脚本时)。
许多 shell 脚本和命令同时支持短选项和长选项,例如
$ ls -a
$ ls --all
但我就是不明白为什么。为什么一个人更喜欢长而不是短选项,为什么我应该同时支持两者(在实现我自己的脚本时)。
我想它是历史性的。短选项更容易实现,因为您只需检查单个字符,但可能的选项数量有限。长选项也更具描述性。
就你自己实现这两个方面而言,大多数库都可以轻松地同时实现这两个,基本上不需要额外的代码。我倾向于使用长选项,因为它们更具描述性,但这纯粹是一个偏好问题。
长选项让你更清楚你在做什么,并且可以给新用户信心,同时让没有经验的用户更容易理解你在做什么。例如,您可能不会运行:
# 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
.
如果您需要的选项数量多于可打印字符的数量,那么您需要长选项。这是关于与人类的互动,这两种方式都有利弊。