linux命令行格局简介
linux命令行的个别格局为:
命令 [选项] [参数]
[]示意可选,即能够有,也能够没有。选项能够有多个,参数也能够有多个。如ls -l /home/,ls是命令,-l是选项,/home是参数。
选项和参数
站在程序开发的角度看,对于程序来说,程序名称前面的内容都是程序的参数,没有太大的不同,选项只是参数中比拟非凡的一类。但从程序使用者的角度看,选项和参数还是有一些不同的:
选项是管制命令行为的开关。个别状况下,选项的名称是由程序提供的,名字是固定的,使用者不能更改。如ls程序提供了-l、-a等选项,使用者能够用这些参数名称,但不能应用-y选项,因为程序没有提供这种选项。
参数是程序的执行对象。个别状况下,使用者能够提供任意内容。如ls /home中的/home,是ls程序作的执行对象,使用者能够提供任意的名称。
既然从程序开发者的角度看,选项和参数都是程序的参数,但为了使用者可能辨别,那么就须要设置一些规定将选项和参数辨别开来。最古老的辨别形式就是以“-”结尾的字符被认为是选项,不带“-”开始的被认为是参数。也有以“–”结尾的字符被认为是选项。
选项也能够有参数,请留神,选项的参数和程序的参数是不同的,要留神辨别。选项的参数是针对选项而言的,参数是针对整个程序而言的。如ls –sort time /home,time是–sort选项的参数,/home是程序ls的参数。
选项格局
为了辨别选项和参数,人为地设置了若干辨别规定。但有人的中央就有江湖,每个人都想有本人的格调,都心愿本人的格调能一统江湖。于是有名气者、武艺高超者开始开宗立派。
依据选项格调的不同,目前根本造成了几种不同的命令行格调,如POSIX/UNIX格调、GNU格调、BSD格调、X toolkit格调。
POSIX/UNIX格调
原始的Unix格调命令行选项,是以连字符“-”结尾的单个字符(留神是一个字符,而不是一个单词)。
如果选项前面不带参数,则被称之为模式选项。模式选项是能够组合在一起应用的。例如,如果-a和-b是模式选项,那么-ab或-ba就都正确,而且会启用这两个选项。如ls -al、ls -la、ls -a -l的作用是一样的。
如果选项须要带参数,这些参数要紧接在这个选项前面,能够以空格离开,也能够不以空格离开。如ls -w50 /home(留神:w和50之间没有空格)、ls -w 50 /home(留神:w和50之间有空格)的作用是一样的。
最后的 Unix 格调是在迟缓的 ASR-33 电传打字机上演变而来的,这使得简洁成为一种美德。因而是单字母选项。按住shift键须要额定的精力,因而偏爱小写,并应用“-”(而不是可能更合乎逻辑的“+”)来启用选项。
GNU格调
选项应用“–”结尾的单词。如ls –all。
如果选项须要带参数,则应用空格或者“=”将参数和选项离开。如ls –sort time(留神sort和time之间的空格) 、ls –sort=time。
这种格调的呈现是因为仅仅26个字母(或者算上大小写52个)不够一些简单的GNU程序应用。另外一点是相比于单字符的POSIX/UNIX格调,其更容易了解,因为呈现的不再是缩写的字母。
“–“结尾的GNU格调的选项格局又被称为“长选项”,与之对应的,之前以“-”结尾的单字符的选项格局也被成为“短选项。
bsd格调
和POSIX/UNIX格调相比,其选项应用单个字符,且不带任何前缀。如ps a(留神,只有单个a字符,没有-符号)。如果是多个不带参数的选项,也能够组合在一起,如ps aux。
如果选项须要带参数,也同POSIX/UNIX格调一样,选项参数紧跟在这个选项前面,能够应用空格离开,也能够不必空格。如ps U root(留神:root和U之间有空格)、ps Uroot (留神:root和U之间没有空格)的作用是一样的。
X toolkit格调
但原始的X toolkit格调是由X toolkit进行解析,它首先过滤并解决某些选项(如-geometry和-display)而后再把过滤后的命令行传递给利用程序逻辑进行解析。
以“-”结尾的单词(留神是单词,而不是单个字符)。如java -version,”-“前面跟着的是一个单词。
如果选项须要带参数,则选项参数紧跟在这个选项前面,且应用空格离开。find -name *.txt.
这种格调即不能和古典的POSIX/UNIX格调兼容,也不能和GNU格调兼容,所以不应该在新程序中应用,除非遵循老式的X约定看起来价值很高。
备注:不确定将find、java命令归类为X toolkit格调是否正确?因为它们不属于X软件,但格调的确很象。java在某些高版本中,也反对了GUN格调的命令行。
当然,还有其它各种各样的格调,只是不是太常见,所以不再介绍,理论遇到的时候,须要依据手册或者帮忙文档查看其选项的格局和含意。须要留神的是,这些格调之间只是”格调”不同,理论应用中并不限度应用,比方上述 ps 命令,因为一些历史起因,就能够接管POSIX/UNIX格调、GNU格调、BSD格调的参数,相互并不抵触。就像武林中的高手一样,能够应用多个门派的文治。然而倡议退出到较风行的门派中,毕竟应用的人多的门派,相对来说,比拟容易和其它人交换。如GNU格调、POSIX/UNIX格调,且倡议同时反对这两种格调(即长命令选项、短命令选项)。如果已有的风行格调曾经能够满足应用需要了,不倡议再开宗立派了,门派多了,沟通和交换的老本就高了。毕竟咱们不是真正的“武林”,不须要分出一个输赢,须要的是更敌对地交换。
参考内容
http://www.catb.org/esr/writi…
unix编程艺术