windows的cmd命令中后面两个--和一个-有什么区别?

clipboard.png
如图两个命令有什么区别呢?

还有这种命令
clipboard.png

阅读 4.1k
2 个回答

按照mysqld的文档,--install才是正确的参数: https://dev.mysql.com/doc/ref...

那个跟windows的cmd无关,而是GNU风格的命令行参数。详细的风格介绍参考GNU官方文档: https://www.gnu.org/software/...

简单点描述,这种风格符合以下几点:

  • 使用-引导短参数,如-a,使用--引导长参数,如--opts
  • 参数可以跟参数选项,如-p /path/to/file
  • 参数和参数的选项之间的空格可选(但有些命令有些参数要求必须不能有空格,比如mysql的-ppassword)
  • 短参数可以将-引导连写,但是带选项的参数必须放最后,比如-a a1 -b -c可以连写为-bca a1
  • 如果以--为参数,则代表此后所有的字符将不再作为命令的参数解析,而直接作为命令的作用对象传入。比如touch -- --file

我以前也翻译过一篇bash getopt解析命令行参数的文章,原文也些许提到过GNU风格的命令行参数: https://my.oschina.net/abcfy2...

绝大多数CLI程序都符合GNU风格的命令行参数,但不是绝对。比如java程序有一套Java风格命令行,所有的参数以单横杠开头-,参数选项和参数之间无空格分割。比如:

java -Xmx1g -version -verbose -XX:+UseG1GC

也有一些命令行符合BSD风格,这种风格不使用-引导参数:

ps aux
NOTE: GNU/Linux下的ps命令既支持BSD风格参数,又支持GNU风格。同理还有tar命令,也同时支持这两种命令行参数风格。

以上只是各种命令行参数风格的一种约定俗成,应用程序通常会遵循这些规范进行设计。但是这些都不是绝对必须遵守的条例,所以具体命令行参数的用法还是要以帮助文档为准。

通常情况 -- 后是参数,- 后是某个参数的缩写

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进