定义
系统和用户之间的界面,实际上都是提供一个进行通信的语言这种语言的性质在很大程度上与操作系统的类型有关。例如分时系统与批处理系统虽然都是面向作业的系统,但是它们工作方式有重要区别,因此这两种系统使用的通信语言也就有很大的不同。分时系统中,用户与系统之间可以频繁的进行交互作业用,用户易于控制其作业在系统中运行的途径,也能对系统的某些动作及时作业响应。所以分时操作系统中使用的通信语言一般比较简单,只是一组要操作使系统进行某种工作的命令,这类语言通常称为命令语言。而在批处理系统中,用户一旦向系统提交子作业,就无法再对该作业的执行过程进行任何控制,因此用户必须事先给出一系列命令,明确规定执行该作业的各个步骤,或指明针对各种中间结果,应选择的运行途径等,所以这种系统使用的通信语言一般比较复杂,功能较强,被称为作业控制语言,或称为命令控制语言。1
SHELL语言UNIX操作系统是一个分时式多用户、交互型软件系统,它和用户的界面是一种命令语言,称之为SHELL(外壳)语言,它的解释程序同样也称为SHELL(即SHELL解释程序)。
一般用法UNIX系统问世以来已取得极大成功,除了由于系统的核心部分有许多突出的优点外,作为操作系统与用户之间的接口——命令设计语言SHELL也起了不可忽视的作用。
SHELL语言本身也像高级程序设计语言一样,具有变量、控制流程、子程序及中断管理等方面的功能。1
特点(1)用SHELL语言编写的命令文件功能强大,易理解,已阅读,易使用,它对大多数UNIX用户来说,是最重要的一种程序。
(2)通过SHELL用户编写的大量程序组织起来,可使UNIX系统成为一个功能强大、使用方便的工具系统。
总之,SHELL虽说是一种命令语言,但其功能很强大,可与一般复杂的作业控制语言相媲美。所以SHELL构成了一个使用UNIX系统的良好环境。1
SHELL变量用户可以使用52个SHELL变量,这些变量的值只能是字符串,变量名分别是26个英文小写字母和26个英文大写字母。SHELL过程用$a、$b、…、$z分别访问这些变量,它们可以用set命令设置。
位置参数可以将打印、编译、执行等命令编写成一个SHELL过程,取名为procdr1,当需要执行该过程时,使用命令:sh procdr1。但是,这种SHELL过程的用处是有限的,因为它只能处理源程序prog1.c,缺乏通用性。为了解决这一问题,SHELL使用了位置变量和位置参数。
用户在编写SHELL过程时,可以用位置变量代表待定的命令参数。位置变量最多可以用9个,分别用$1、$2、…、$9表示,因此可以将上述的procdr1改写为下列形式:
pr $1cc $1mv a.out $2$2这一SHELL过程就有了普遍的意义。在需要对某个源程序,如progn.c进行过程规定的操作时,使用命令:
sh procdr1 progn.c progn.outSHELL过程名procdr1后跟的参数称为位置参数,它们与位置变量一一对应,也就是在SHELL过程名后的第一个参数与$1对应,第二个参数与$2对应…,所以,位置参数最多也只能有9个。在procdr1中只用了两个位置变量,它们分别与位置参数progn.c、progn.out对应。在执行SHELL过程中包含的各命令时,如该命令包含有位置变量,则先代换为相应的位置参数,然后再执行。
调用执行SHELL过程命令的一般形式为:
sh SHELL 过程名 参数表其中参数表是由位置参数组成的。
控制流SHELL提供了一种程序设计语言具有的各种控制语句。例如,二路选择语句if…then…else,多路选择语句case,循环语句for、while,goto语句等。因此用户可以编制出控制功能很强的SHELL过程。
简单命令简单命令是SHELL命令语言的基础,在文件管理系统命令中,不少都是SHELL简单命令。
基本格式command arg1 arg2 ... argn命令 参数
两大类型(1)系统提供的标准命令;
(2)用户自编自用的命令。
特点(1)多数命令名与命令功能紧密相符,如ls即list,ed即editor;
(2)参数有些可选,有些可省略;
(3)命令格式比较自由,如chdir或cd;
(4)简单命令的数量易于扩充,且可以使用的类型因人而异。1
后台命令使用步骤以交互形式使用SHELL简单命令的步骤为:
(1)用户输入命令;
(2)等待其执行结束,终端上出现$提示符;
(3)最后在输入一条命令。1
注意事项某些命令需要较长时间才能执行完毕,且在执行过程中不需要和用户进行交互作用。为了提高用户和系统的工作效率,可以在后台执行这种SHELL命令,也就是无需等待上一条命令执行结束,SHELL解释程序就开始解释执行后一条命令。
一条简单命令通常是由一个进程执行的,为了使用户在需要时能够对执行后台命令的进行进行必要的干预和处理,SHELL在解释执行后台命令时,先要在标准输出设备显示或打印执行该命令的有关程序号。下面出现$提示符,即可执行下一条命令。1
输入/输出转向命令为了便于用户和有关进程进行交互作用,它们常常就是与该进程相关的终端机输入、输出部分进行交互作用。但是某种情况下,例如用户事先已将必要的输出信息存放在某个文件上,或者希望在某个文件上得到输出信息,那么就有必要改变标准输入、输出文件,使之与指定的文件或设备连接起来,SHELL向用户提供一种手段,使得他们可以提出上述要求,这被称之为标准输入输出转向。1
典例1简单命令:cat file1 file2
作用:将file1、file2依次在标准输出文件显示出来。
但如果要求改变标准输出,则可以写为:cat file1 file2 >file3
作用:标准输出转向一般普通文件file3。
注意:若转向文件file3原来并不存在,则SHELL解释库先要创建它;若它已经存在,,则认为这是一个空白文档,重新改写它。
典例2cat file1 file2 >/dev/tty03
作用:转向为另一终端显示。
cat file1 file2 >/dev/plp
作用:转向为打印机
典例3如果希望执行命令时,输出添加到某现存文件的末端,则应该使用另一种输出转向符“>>”。
cat file1 file2 >>file3
标准输入符同样也可以要求加以改变,例如:we