乐趣区

关于linux:linux命令行格式简介

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 编程艺术

退出移动版