linux命令行格式介绍linux命令行的一般格式是:command[options][parameters][]表示optional,即可以有也可以没有。可以有多个选项和多个参数。比如ls-l/home/,ls是命令,-l是选项,/home是参数。选项和参数从程序开发的角度来说,对于程序来说,程序名后面的内容就是程序的参数,没有太大的区别,选项只是一种特殊类型的参数。但是从程序使用者的角度来看,选项和参数还是有区别的:选项是控制命令行行为的开关。一般情况下,选项的名称由程序提供,名称是固定的,用户不能更改。例如ls程序提供了-l、-a等选项,用户可以使用这些参数名,但不能使用-y选项,因为程序没有提供这些选项。参数是程序的执行对象。通常,用户可以提供任意内容。例如ls/home中的/home是ls程序的执行对象,用户可以提供任意名称。既然从程序开发者的角度来看,选项和参数都是程序参数,但是为了让用户能够区分,那么就需要设置一些规则来区分选项和参数。最古老的区分方式是以“-”开头的字符被认为是选项,没有“-”的字符被认为是参数。还有一些以“--”开头的字符被认为是选项。options也可以有参数,注意options的参数和程序的参数是不一样的,要注意区分。选项的参数是针对选项的,参数是针对整个程序的。比如ls--sorttime/home,time是--sort选项的参数,/home是程序ls的参数。选项格式为了区分选项和参数,人为设置了几种区分规则。但有人的地方,就有江湖。每个人都想拥有自己的风格,都希望自己的风格能够称霸江湖。于是有名有术的武者开始立宗派。根据选项的不同,基本上有几种不同的命令行风格,如POSIX/UNIX风格、GNU风格、BSD风格、X工具包风格。POSIX/UNIX风格原始的Unix风格命令行选项是以连字符“-”开头的单个字符(注意它是字符,而不是单词)。如果选项后面没有参数,则称为模式选项。模式选项可以组合使用。例如,如果-a和-b是模式选项,那么-ab或-ba是正确的,并且两个选项都已启用。比如ls-al,ls-la,ls-a-l都有同样的效果。如果选项需要参数,则这些参数后面必须跟这个选项,可以用空格分隔,也可以不用。比如ls-w50/home(注意:w和50之间没有空格),ls-w50/home(注意:w和50之间有空格)效果一样。最初的Unix风格是在速度较慢的ASR-33电传打字机上演变而来的,这使简洁成为一种美德。因此,单字母选项。按住shift键需要额外的努力,所以喜欢小写,并使用“-”(而不是可能更合乎逻辑的“+”)来启用选项。GNU风格的选项使用以“--”开头的单词。如ls--all。如果选项需要参数,请使用空格或“=”将参数与选项分开。比如ls--sorttime(注意sort和time之间的空格),ls--sort=time。这种风格的出现是因为对于一些复杂的GNU程序来说,只有26个字母(或52个包括大写和小写字母)是不够的。还有一点就是比单字符的POSIX/UNIX风格更容易理解,因为不再有缩写字母。以“--”开头的GNU风格的选项格式也称为“长选项”。相应地,以“-”开头的单字符选项格式也称为“短选项”。BSD风格与POSIX/UNIX风格相比,其选项使用单个字符,不带任何前缀。比如psa(注意只有一个a字符,没有-符号)。如果有多个不带参数的选项,也可以组合在一起,比如psaux。如果该选项需要参数,它也与POSIX/UNIX风格相同。选项参数跟在这个选项后面,可以用空格分隔,也可以不用空格。比如psUroot(注意:root和U之间有空格),psUroot(注意:root和U之间没有空格)效果一样。Xtoolkitstyle但原来的Xtoolkitstyle是由Xtoolkit解析的,它首先过滤和处理一些选项(例如-geometry和-display),然后将过滤后的命令行传递给应用程序逻辑进行解析。以“-”开头的单词(注意是单词,不是单个字符)。例如java-version,"-"后跟一个单词。如果选项需要参数,则选项参数后面要跟选项,并用空格隔开。查找-名称*.txt。这种风格既不兼容经典的POSIX/UNIX风格,也不兼容GNU风格。所以它不应该在新程序中使用,除非遵循老式的X约定似乎具有很高的价值。备注:不确定将find和java命令归类为X工具包样式是否正确?因为它们不属于X软件,但是风格确实很相似。在一些更高版本的java中,它还支持GUN风格的命令行。当然还有其他各种样式,不过不是很常见,就不多介绍了。当你真正遇到它们时,你需要根据手册或帮助文档检查选项的格式和含义。需要注意的是,这些样式只是“风格”上的不同,在实际使用中并没有使用上的限制。比如上面的ps命令,由于一些历史原因,可以接收POSIX/UNIX风格、GNU风格、BSD风格的参数,它们可以相互配合使用。没有冲突。就像武林高手一样,可以使用多门门派的武学。但是建议加入比较热门的门派。毕竟,很多人使用的门派,都是比较容易与其他人交流的。比如GNU风格,POSIX/UNIX风格,建议两种风格都支持(即长命令选项,短命令选项)。如果现有的流行款式已经可以满足使用需求,不建议建立宗派。门派太多,沟通交流的成本就会很高。毕竟我们不是真正的“武林”,我们不需要分出胜负,我们需要的是更友好的交流。参考内容http://www.catb.org/esr/writi...unix编程艺术
