Unix/Posix风格※
也叫短选项风格,是最原始的风格,选项是以连字符-
开头的单个字符,注意是一个字符,而不是一个单词。
如果选项后面不带参数,则被称之为模式选项。模式选项是可以组合在一起使用的。例如:如果-a和-l是模式选项,那么-al或-la就都正确。
如果选项需要带参数,则称之为参数选项。这些参数要紧接在这个选项后面,通常用空格隔开。
最初的Unix风格是在缓慢的ASR-33电传打字机上演变而来的,这使得简洁成为一种美德,因此是单字母选项。按住shift键需要额外的精力,因此偏爱小写,并使用-
,而不是可能更合乎逻辑的+
来启用选项。
GNU风格※
也叫做长选项风格,选项使用两个连字符--
开头的单词,如:ls --all
。
如果选项需要带参数,则使用空格或者=将参数和选项分开。如:ls --sort time
,ls --sort=time
。
这种风格的出现是因为仅仅26个字母,即使算上大小写也只有52个,不够一些复杂的GNU程序使用。另外一点是相比于单字符的Unix/Posix风格,GNU风格更容易理解,因为出现的不再是缩写的字母。
BSD 风格※
和POSIX/UNIX风格相比,其选项使用单个字符,且不带任何前缀。如ps a
。如果是多个不带参数的选项,也可以组合在一起,如ps aux
。
如果选项需要带参数,也同POSIX/UNIX风格一样,选项参数紧跟在这个选项后面,可以使用空格分开,也可以不用空格。如ps U root
、ps Uroot
的作用是一样的。
其他※
上面三种风格是最常见的,绝大多数程序的命令是属于上述中的一种,甚至可以同时接受这三种风格的命令行,如ps
,tar
,但除此之外,还有小部分命令的参数风格,不属于上面的任何一种。
比如java -version
,find -name
像这样命令行,其选项通常以单个连字符-
开头,后跟一个单词或字符来表示选项。有的程序员称之为X toolkit风格。其实这种概括并不是很准确,我通过查阅资料得知:X toolkit风格的命令行是指,在X窗口系统中使用X toolkit库进行解析和处理的命令行参数和选项的风格。
它首先过滤并处理某些设置显示效果的选项,如-display
和 -geometry
,并将剩余的命令行参数传递给应用程序进行解析和处理。可见,X toolkit风格的重点是有一个过滤的流程。