命令行参数前的「-」和「--」区别

Posted a-s-m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令行参数前的「-」和「--」区别相关的知识,希望对你有一定的参考价值。

转自:https://www.zhihu.com/question/267095526/answer/319387178

简单来说,「-」和「--」是两种不同的命令行选项的风格。前者是传统的Unix风格的,后者是GNU风格的。

具体点来讲,起初Unix设计命令行程序时,需要将一个命令的『选项』(Options)和『参数』(Arguments)区分开来,就引入了「-」。

凡是以「-」开头的,就是选项。选项用一个单独的字母作为标志,通常也是一个选项英语的缩写。

例如,「-a」表示所有(all),「-c」表示命令(command),「-f」表示文件(file),「-V」表示版本(version)。

多个选项也可以连写,如「ls -A -l」可以写成「ls -Al」。

但是,单独字母的数量毕竟有限,会不够用,而且表达的意思不够明确。

于是就有了之后的GNU风格来完善上述的不足,使用「--」作为前缀,后面可以跟一串单词,如「--version」,「--all」。

选项自己的参数即可以放在后面用空格隔开,可以使用「=」,如「--file foobar.out」等价于「--file=foobar.out」。

这种GNU风格的选项常被称之为『长选项』(Long Options),而Unix风格的为『短选项』(Short Options)。

通常来说短选项都有与之对应的长选项,如「-a,--all」、「-V,--version」。

以上是关于命令行参数前的「-」和「--」区别的主要内容,如果未能解决你的问题,请参考以下文章

Perl和python命令行参数的区别

命令行参数 - 和 -- 的区别

Python3-argparse模块-解析命令行参数

解析/传递命令行参数到bash脚本 - “$ @”和“$ *”之间有什么区别?

Linux编程:命令行选项单横线“-”与双横线“--”的区别

Python语言命令行参数解析接收参数执行脚本的三种方法