




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.1作业控制级接口2.2程序级接口2.3UNIX的用户界面Shell简介2.4小结习题2.1.1作业、作业步、作业流
所谓作业就是用户一次请求计算机系统为它完成任务所进行的工作总和。一般来说,为了完成其任务,可以将作业细分成若干个作业步。作业步就是处理作业的各个独立的子任务,系统可以创建若干进程完成各作业步的计算,所以说一个作业是由若干作业步组成的。下面我们以在PC机上用MS-DOS控制时,其作业加工的步骤为例:
(1)编辑:A>EDLINUSER.ASM
首先用宏汇编语言编写一个源程序,然后调用行编辑程序EDLIN编辑该用户程序,其名为USER.ASM。2.1作业控制级接口
(2)汇编:A>MASMUSER
用宏汇编程序将源程序USER.ASM汇编成目标程序文件USER.OBJ。
(3)链接:A>LINKUSER
用链接程序将其目标模块和所使用的各种应用模块(库文件)链接成一个可执行文件USER.EXE。
(4)执行:A>USER
最后执行USER.EXE文件获得所要的结果。
上述几个步骤的总和就是一个作业,每个步骤称为作业步。一个作业划分成多少个作业步与具体的作业和操作系统有关。各个作业步是相对独立又是相互关联的,前一个作业步将产生下一个作业步运行时所需的数据,并且只有前一个作业步运行成功后,方可继续运行下一个作业步。
作业流是由若干作业组成的,在批量处理系统中通常把若干作业依次放在输入设备上,在操作系统控制下将其送入辅存,这样就形成了一个作业流,也称为输入流。2.1.2作业的类型
根据计算机系统的作业处理方式不同,可把作业分成两大类:脱机作业和联机作业。脱机作业是指用户不能直接与计算机系统交互,中间通过操作员干预的作业。该作业通常在批处理系统中使用,所以也称为批量型作业。联机作业指的是用户和计算机系统直接交互,用户通过终端或控制台键盘上的操作命令或菜单图标等方式控制其作业的运行,这种作业也称交互型作业或终端型作业。联机作业多出现在分时系统中,而脱机作业多出现在批处理系统中。在分时和批处理兼顾的系统中,将终端作业作为前台作业,而把批量型作业作为后台作业,通常前台作业的优
先权较高,作业响应及时。在前台无作业时,可调度后台的批量型作业,达到提高系统效率的目的。2.1.3作业控制命令与键盘操作命令
1.脱机用户接口
脱机用户接口由一组作业控制命令或称作业控制语言组成。
脱机用户接口用于脱机控制方式。所谓脱机控制方式就是把对作业进行控制的意图,连同程序和数据及发生故障后的处理措施一起输入系统中,由系统根据该意图来控制作业的执行。在批处理系统中,用户利用作业控制(命令)语言写成作业说明书提交给系统,由系统按照作业说明书上的命令,逐条解释执行。用户一旦把作业提交给系统后,便失去直接与作业交互的能力。脱机控制接口使用作业控制卡和作业说明书两种形式。
(1)作业控制卡。作业控制卡主要用在早期的批处理系统管理中。作业控制卡接口方式就是使用作业控制语言(JCL)将用户对作业的控制意图及发生故障后如何处理以编码的形式穿孔在卡片上,插入到用户程序、数据的卡片叠中一起送入系统,由系统解释控制卡内容并控制作业运行。
作业控制卡方式使用不方便,容易出错且较麻烦,所以现在一般很少使用。
(2)作业说明书方式。作业说明书方式是使用某些作业控制命令将用户对作业控制的意图写成作业说明书,从而实现对作业的控制。作业说明书主要包括作业情况和作业资源要求两方面的内容,前者主要指用户名、作业名、使用语言、作业控制方式、作业优先级、完成作业的最迟时间等。后者包括内存和外存的空间要求量、输入/输出设备的类型、台数、输出量、估计的计算时间等。作业说明书中常用命令的主要类型如下:
①输入/输出命令:对源程序、数据及其作业说明书的输入及其运行结果输出的命令。
②编译命令:对源程序进行编译,若有错误显示错误,若无错误将其编译成目标程序。
③操作命令:主要是对作业操作的各种命令。如对目标程序的装配,程序的重新启动,限定其运行时间等的命令。④条件命令:主要用于表示当程序运行过程中发生某个事件时应转向哪一条操作命令。
虽然作业控制卡和作业说明书这两种方式随着具体系统的不同而有所不同,但其实质都是将用户对作业的控制意图用不同的命令组合在一起提交给系统,由系统解释作业控制卡或作业说明书上的各语句从而控制作业的执行。这种方法虽然能自动地控制作业的执行,系统效率较高,但缺乏交互能力,不适合初学者。为了解决这方面的不足,出现了联机式控制方式。
2.联机用户接口
联机用户接口是由一组操作系统命令组成的,用于联机作业的控制。
所谓联机用户接口就是采用人机对话的方式来控制作业的运行。它能及时地反映作业的运行情况和系统状态,因此用户可根据当前的情况决定下一步应该采取的行动。不同的系统提供的联机用户接口方式不同,但一般可提供如下的一种或几种方式:命令驱动方式、菜单驱动方式和命令文件方式。
1)命令驱动方式
用户通过控制台终端,打入操作系统提供的命令来控制自己的作业的运行,系统接收到一条命令后,由命令处理程序解释并执行,然后,通过屏幕显示将结果报告给用户。
用户根据显示的结果和自己的需要可再打入下一条命令,决定下一步的操作,如此等等,直到作业完成为止。
目前各种操作系统提供的联机命令(键盘操作命令)从格式到功能都不尽相同,但通常命令格式如下:
COMMANDarg1,arg2,...,argn<CR>
其中,COMMAND是命令名;arg1,arg2,...,argn是命令参数,命令参数的有无和多少由命令本身决定。<CR>代表回车键,一般作为命令的结束符。只有按下回车键,该命令才能被系统接收。一般命令类型有如下几种:
①系统访问命令:常用的有注册命令、注销命令、修改口令命令等。注册命令是在用户使用计算机之前,进行注册(登记)时使用的。当系统接到注册命令后,先做些必要准备,然后显示一些信息,即允许用户进入,此时表示用户可以使用计算机了。例如在UNIX系统中,当系统终端接通后,即显示:
LOGIN:(此时要求用户敲入自己的注册名字)
PASSWORD:(要求用户敲入自己的口令或密码,为了保密,屏幕不显示其内容)
如果口令核实无误,系统就会显示系统提示符,表示用户可以利用操作系统提供的各种命令在各自的终端上使用计算机了。
当作业结束或要退出系统时,必须敲入注销命令才能离开计算机。如敲入LOGOUT或BYE等。②编辑和文件管理命令:编辑命令由若干条子命令组成,为用户提供输入原始数据和程序以及进行修改的能力。文件管理命令包括复制、删除或显示文件内容以及建立、删
除、查看目录等命令。
③编译、汇编和连接命令:包括各种高级语言的编译命令和汇编命令、连接命令等。
用户使用这类命令产生可执行的目标程序。
④调试命令:它为用户提供调试机器语言程序的手段。该命令包括有显示、修改内存单元和寄存器,设置断点、跟踪、执行、存盘、读盘、简单汇编和反汇编等。⑤维护管理命令:这类命令一般为系统管理员所使用,它包括查询系统资源使用情况,各终端运行情况,外设的分配、安装和释放等命令。
⑥其它命令:包括记账,建立和查看日期、时间,修改和设置外设参数等命令。
上述几种命令中,除多用户系统和分时系统中才有系统访问命令外,其余的命令是一般操作系统都应具备的。
2)窗口系统与菜单驱动方式
在命令接口方式中,要求用户熟悉并记住系统所提供的各种命令的名称、功能及格式。同时也要求用户按照规定的格式准确地使用。这种使用方式不仅不方便,而且容易出错。现在许多操作系统提供了图形用户接口,其中以Microsoft公司Windows最有代表性。
在运行Windows时,其操作都是在桌面上进行的。桌面是指整个屏幕空间,由多个任务所共享,每个任务都通过它的窗口显示其操作和运作情况。因此,Windows允许在桌面上同时出现多个窗口。窗口由标题栏、菜单栏、图标等组成。用户可以利用鼠标和/或键盘,通过窗口对应用程序进行操作。这样,窗口就成为用户与操作系统、应用程序之间的接口。
通过窗口用户可以输入所需的信息,系统可以通过窗口向用户展示系统所能提供的各种服务和响应的结果信息。用户还可以通过窗口去查看和操纵他的程序和文档。为了减轻使用者记忆命令功能和用法的负担,可在窗口中使用“菜单”驱动方式。使用菜单驱动方式不必事先记住各种命令的拼写与用法,用户只要根据屏幕上的提示选择所需的命令。菜单驱动方式是通过友善的人机界面提供给用户,目前常用的有多级下拉式菜单与窗口系统。菜单有应用菜单和窗口控制菜单,其展现的形式有菜单条、弹出式和下拉式菜单。在多级下拉式菜单方式下,用户可根据屏幕上的菜单提示,一级级选择所需的操作,往往要经过几次选择才找到所需的操作,故速度比较慢,但所提供的功能颇多,Windows系统就是采用这种级联菜单。目前,“窗口系统”的软件在微型机领域中获得广泛的应用。窗口系统提供友善的菜单驱动、具有图形功能的用户界面的操作环境,它提供了新颖、有效的窗口驱动方式,很受用户欢迎。在面向图形的窗口中,图标是图形用户接口中的一个重要元素。所谓图标就是代表一个应用程序或文件等的一个小图像,也是最小化的窗口,通过对图标的操作可以激活相应的程序,或启动应用程序。图标有应用程序图标、组图标和应用程序项图标。
3)命令文件方式
将键盘操作命令按用户要求的执行顺序组成一个命令文件,执行此命令文件,就能自动控制作业的运行,这对一些重复作业的运行很有好处。MS-DOS操作系统中的批处理文件就属于命令文件方式。它实际上实现了联机状态下的批处理操作。2.2.1管态与算态
我们知道,在计算机系统中存在两类程序:系统程序和用户程序。这两类程序的作用是截然不同的。系统程序是用户程序的管理者和控制者。也就是说,用户程序是在系统程序的管理和控制下运行的。在早期的批量处理阶段就已发现,如果让这两类程序享有同样的“待遇”(互相调用关系),则对整个系统的安全极为不利。例如,若允许用户程序擅自使用外设指令,就会把系统搞乱,因为具体的物理外设是由操作系统来掌管的。这就表明,为了更好地管理和控制多道程序,必须让系统程序2.2程序级接口享有一些用户程序不能享有的特权。既然要让这两类程序享有不同的权利,那么就应在它们的运行过程中予以区分,并防止用户程序的窃权行为。更确切地说,为了使计算机系统能有条不紊地工作,保证计算机系统的安全,需在计算机运行过程中对这两类程序规定不同的运行状态。我们让系统程序工作在管态(管理程序状态),让用户程序工作在算态(算题状态)。管态也称为核心态,算态也称为用户态。通常,在计算机中程序运行的状态都反映在程序状态字寄存器中。
程序状态字(PSW)寄存器是计算机中的一个硬件寄存器,它是构成程序在计算机中运行现场的重要设备。所谓计算机的运行现场,就是指计算机在执行程序过程中任一时刻的状态信息的集合。计算机的运行现场通常指下列寄存器:程序状态字寄存器、指令计数器、通用寄存器组以及其它一些特殊控制寄存器。
在不同的计算机中表征算态和管态的方式也不尽相同。有的在程序状态字寄存器中规定某一位为“0”表示管态,为“1”表示算态;也有的计算机在程序状态字寄存器中用两位表示状态,例如用“00”表示核心态,用“11”表示用户态。2.2.2特权指令与访管指令
在管态下运行的操作系统程序,应赋予它什么特权呢?这个特权就是在管态下允许系统程序执行一类专用的机器指令,即所说的特权指令。
特权指令是一类只能在管态下执行而不能在算态下执行的特殊的机器指令。这类指令在不同的机器上有不同的规定,其配置通常与硬件特点和系统结构有关。但有些特权指令是一般机器都设置的。常见的特权指令有以下几种:
(1)有关使用外设的指令。如启动外设指令,测试外设工作状态以及控制外设动作的指令等。
(2)有关访问程序状态的指令。我们知道,任一时刻处理机状态信息的集合称之为处理机的运行现场。一般来说,现场信息都保存在指令计数器、程序状态字寄存器、通用寄存器和特殊的控制寄存器中。程序状态字寄存器存放了程序在执行中形成的和执行前预置的信息,它反映了处理机当前时刻的状态。改变程序状态字寄存器的内容,就等于改变了处理机状态,所以对程序状态寄存器的访问应属于特权指令。
(3)存取特殊寄存器的指令。一般计算机都有一些硬件寄存器,如中断寄存器、时钟计时器、上下界地址寄存器等。对于这些特殊寄存器的存取应由系统程序在管态下进行。
(4)其它指令。用户程序只能使用算态指令在算态下运行,而操作系统是系统程序,它既可以使用算态指令,也能在管态下使用特权指令。这样一来,用户程序要求使用外设时,就要使用“启动外设”指令,而“启动外设”指令是特权指令,在算态下被认为是非法的。所以,启动外设的工作必须在管态下由操作系统来完成。于是,用户程序必须借助一条指令使得处理机能从原来的算态进入管态,在管态下由操作系统协助完成,完成后再返回到用户程序。这样的指令就是访管指令。访管指令本身不是特权指令,其基本功能是“自愿进管”,从而引起访管中断。对于用户程序在算态下无法完成的工作,就要求操作系统提供相应的服务。为此,在用户程序中安排一条访管指令,当执行到该访管指令时,便引起访管中断。中断发生后,硬件开始响应中断,保存原来的PSW到内存固定单元,再从内存另一固定单元取出新的PSW,送程序状态字寄存器。由于新的PSW中事先已预置了“管态”,从而使用处理机进入管态。在管态下由中断处理程序(即系统调用处理程序)完成用户程序所请求的服务,并可使用特权指令。中断处理程序的工作完成后,通过恢复原来的PSW到程序状态字寄存器,又可返回到用户程序,这样处理机就又从管态回到了算态。2.2.3系统调用
1.系统调用的定义
计算机系统中的各种资源都由操作系统来统一管理,因此在操作系统的外层软件或用户程序中,凡是与资源有关的操作,如分配内存、进行I/O操作等都必须通过某种方式向操作系统提出服务请求,并由操作系统代为完成;又如,操作系统常常为用户提供文件管理、时间、日期、当前系统状态等服务。因此,操作系统必须提供某种形式的接口,让用户通过这些接口使用系统提供的各项功能。这种接口就是所说的系统调用。系统调用是通过访管指令或软中断方式中断现行程序,而转去执行相应的子程序,以完成特定的系统功能。完成后又返回到发出系统调用的下一条指令,被中断的程序将继续执行下去。在多道程序系统中,系统调用可以在多个进程中“同时”进行,这就要求系统调用程序是可“重入”的。因此可以这样说:所谓系统调用就是用户在程序中能用访管指令或软中断指令调用的,由操作系统提供的子功能集合,其中每一个子功能就是一个系统调用命令。
系统调用中至少包括一条访管指令,有的计算机不设置访管指令,其作用由一条软中断指令来代替。所以说,系统调用就是由操作系统代为用户完成某些特定功能的子过程。操作系统提供了系统调用后,使得用户编程方便,且系统功能更强了,这相当于计算机的指令系统得到了扩充。因为从调用形式上看,执行一条系统调用命令就好像执行了一条功能很强的机器指令。所不同的是指令系统中的指令是由机器硬件或固件(微程序)解释执行,而系统调用命令必须由操作系统解释执行。在这个意义上说,系统调用也可称为“广义指令”。
2.系统调用与过程调用的区别
在操作系统中实现的系统调用是提供给用户的各项系统功能,它有些类似系统提供的许多过程供用户使用。但是,它与一般的过程有着本质的区别,主要区别如下:
(1)运行在不同的系统状态。在程序中的过程一般都是用户程序,或者都是系统程序,即都是运行在同一系统状态下(算态或管态)。但是,系统调用的调用过程是用户程序,它运行在算态下,而被其调用的过程是系统过程,必须运行在管态下。
(2)通过软中断进入。一般的过程调用可以直接由调用过程转向被调用过程。而执行系统调用时,由于调用过程和被调用过程处于不同的系统状态,因而不允许由调用过程直接转向被调用过程,而通常都是通过软中断机制或访管指令,先进入操作系统,经分析后,才能转向被调用过程,即相应的系统调用命令处理程序。2.2.4系统调用类型
操作系统所具有的功能,可以从它所提供的系统调用中表现出来。但不同性质的操作系统所提供的系统调用有一定的差异。在每个系统中,通常都有几十条甚至上百条系统调用,可以将它们分为若干类,例如用于进程控制的系统调用,用于存储管理的系统调用,以及用于文件管理、设备管理、进程通讯、信息维护等的系统调用。以Linux(它是UNIX操作系统的一个变种,是当前广为流行的一种操作系统)操作系统为例,它提供的主要系统调用有:
1.进程控制
(1)fork() 创建一个与当前进程完全相同的拷贝
(2)exit(intstatus)终止正在执行的进程,关闭所有被打开的文件描述符并向其父进程返回状态
(3)waitpid(pid,&statloc,opts)等待一个子进程结束
(4)execv(filename,argv,envp)替换一个进程的核心映像
(5)getpid() 返回调用进程的标识符
(6)wait() 等待子进程
waitpid() 等待指定进程,wait3()和wait4()等价于wait()与waitpid()
(7)select() 提供多任务处理的简便方式
2.进程通讯
(1)signal() 指定进程在收到信号时所做的控制
信号处理
(2)kill(intpid,intsig) 把sig信号送到pid指定的进程
(3)pause() 使调用进程挂起暂停执行,直到接
收到某种信号为止
3.文件管理
(1)open(constchar*pathname,
intflage,open(constchar*pathname,
intflage,mode_tmode) 打开文件
(2)close(intfd) 关闭相应的文件描述符
(3)read(intfd,void*buf,size_tcount)用来从相应于文件描述符
的文件中读出数据
(4)write(intfd,void*buf,size_tcount)用来向相应于文件描述
符的文件中写入数据
(5)ioctl(intfd,intrequest,...)设置或检索文件的有关参数,并
对文件进行一些其它的操作,涉
及的设备不同,其参数也不同
(6)fcntl(intfd,intcmd),fcntl(intfd,
与ioctl()相似,不同的是fcntl用来
intcmd,longarg) 设置或检索另外一组参数
(7)fsync(intfd) 把要写入文件描述符fd中的所有数 据刷新到此盘或其他相关设备去
(8)ftruncate(intfd,size_tlength)将由文件描述符fd引用的
文件按length指定的长度
截断
(9)lseek(intfildes,off_toffset,intwhence)
设置与文件描述符fildes相关的文件的
当前读写位置到指定的位置offset
(10)dup(intoldfd) 返回一个未用的最小的文件描述符
dup2(intoldfd,intnewfd)返回指定的文件描述符,
常用来重新打开或重定向
一个文件描述符
(11)select(intn,fd_set*readfds,fd_set
允许一个进程同时在多个文件描述符
*writefds) 上具有一个可选的传输等待时间。只要在
指定的文件描述符中有一个文件可以进行
操作,该调用就返回
(12)fstat(intfiledes,stcuctstat*buf)
获取与文件描述符相关的文件信息,返回
的信息放在由参数buf所指向的stat结构中
(13)fchown(intfd,uid_towner,gid_tgroup)
修改一个打开文件的属主和组
(14)fchmod(intfildes,mode_tmode)
修改与参数fildes相关的文件模式(权限位)
(15)fchdir(intfd) 把目录修改为与打开的文件描述符
fd相关的文件所在的目录
(16)flock(intfd,intoperation)对文件描述符引用fd的文
件的上锁或解锁
(17)pipe(intfiledes[2])创建管道,并返回两个文
件描述符
4.目录及文件系统管理
(1)mkdir(name,mode) 创建一个新目录
(2)rmdir(name) 删除目录
(3)mount(special,name,flag)安装一个文件系统
(4)umount(special) 拆卸一个文件系统
(5)chdir(dirname) 改变工作目录
(6)chroot(dirname) 改变根目录
5.维护信息
(1)chmode(name,mode) 改变文件的保护位
(2)getuid() 获取调用进程的uid
(3)getgid() 获取调用进程的gid
(4)setuid() 设置调用进程的uid
(5)setgid() 设置调用进程的gid
(6)chown(name,owner,group)改变文件的属主和组
6.时间管理
(1)settimer() 设置一个计时器
(2)timer() 获得时间
7.网络通讯服务
(1)accept(socket,addr,addrlen)从连接请求队列中取走下
一个请求,并为该请求创建一个新套
接字,返回新套接字描述符
(2)bind(socket,localaddr,addrlen) 为一个套接字指明一个
本地IP和协议端口号
(3)close(socket) 中止通讯,并删除套接字
(4)connect(socket,addr,addrlen)允许调用者为先前创建
的套接字指明远程端点的地址
(5)listen(socket,queuelen) 准备接受联入的请求
(6)send(sockfd,*msg,len,flags)通过套接字接口发送信息
(7)recv(sockfd,*buf,len,flags)通过套接字接口接受信息2.2.5系统调用的使用和执行过程
不同操作系统所提供的系统调用命令的条数、命令格式和所完成的功能以及每条系统调用所使用的系统调用号等都不尽相同,但用户使用系统调用的步骤及其执行过程基本上是相同的。
1.使用步骤
(1)将系统调用所需的参数和参数的首址送到规定的通用寄存器。
(2)设置一条调用指令(比如“访管”指令或“软中断”指令)。系统调用命令的功能号,有的系统直接在调用指令中给出,有的系统也作为调用命令的参数放入到指定的通用寄存器中。
2.执行过程
当用户程序执行到调用命令时,就转入到系统调用的处理程序。其处理过程如下:
(1)为执行系统调用命令做准备,将用户程序的“现场”保留,同时将系统调用编号、参数等放入约定的存储单元中。
(2)根据系统调用命令号,检查是否为合法的系统调用。若是,根据系统调用表和系统调用号,转入相应的系统调用函数。
(3)系统调用命令执行完后,恢复“现场”,同时将系统调用命令的返回参数或参数区首址送到系统约定的寄存器中供用户程序使用。在UNIX系统或Linux系统中,当系统启动后,系统为终端用户建立一个Shell进程,由该进程去读入、识别和执行用户键入的各种命令,Shell进程一直持续到用户使用注销命令注销为止。Shell进程为读入的每一条命令建立一个子进程,去执行该命令。Shell类似DOS的命令解释程序。2.3UNIX的用户界面Shell简介
UNIX或Linux操作系统的用户界面Shell是一种联机命令语言。它既是一种交互式命令解释程序,也是一种命令级程序设计语言解释程序。因此,Shell作为操作系统命令语言时,用户可以通过这些命令在终端上和操作系统对话,直接控制自己的程序的运行;Shell可以像高级程序语言一样,具有参数传递、变量设置、字符替换、流程控制、子程序以及中断管理等功能,用户可以通过这些程序设计语言编制出功能强,而又十分简洁明了的程序(命令过程)。这种程序可作为一般文件存入,需要时调入内存,由Shell解释执行。下面简要介绍LinuxShell命令语言。一般Shell程序分为两类:一类是“BourneShell”,另一类是“CShell”,它们的提示符分别是“$”与“%”。Bourneshell是UNIX和Linux的缺省Shell,CShell提供了BourneShell所不能处理的用户交互特征,但它的编程能力不如BourneShell强,它的语法类似C语言,使用起来很方便。2.3.1Shell命令语言
1.命令结构
系统提供了100余条简单Shell命令。Shell由简单命令名和管道命令名及命令参数(若有的话)组成,命令名与命令参数之间用一个或几个空格分开。用户键入的命令常带有各种命令
行变元和开关。开关通常以连字符(-)开始,位于命令名之后和主变元之前。根据需要用户可以使用两个以上开关。一行可以写多条命令,它们之间使用分号“;”和后台命令“&”隔开。以命令pr为例,开关-d表示产生行间距为二的输出,-n表示产生行号。以下两种形式是等价的:
$pr-n-dfile1
$pr-ndfile1
又如:
$date;who
这两条命令分别打印或设置系统日期和时间,查看其它登录的用户。
2.Shell元字符
几乎所有的操作系统都提供一定数量的元字符,这些元字符在命令中大多数用来匹配文件名,如在DOS和Windows中常使用的“?”和“*”。在Linux的Shell中常使用的元字符有以下几种:
?匹配文件名中的任何单个字符
()括号中的内容理解为一条命令
&后台执行命令
$0,$1,...$n替换命令行中的参数
$VarShell变量Var的值
;命令表的分隔符`comd` 执行反引号中的命令,并在输出时用该命
令执行的结果替换命令部分
Var=V 将值赋给Shell变量
comd1||comd2 如果不成功,则执行命令comd2,否则执
行comd1
comd1&&comd2 如果不成功,则执行命令comd1,
否则执行comd2
# 忽略所有在#之后的内容(即#是注释符)
例如:
$who|grepmike||echowangisnotloggedin
如果who和grep指出用户mike未注册,这条命令执行失败,显示echo命令后的信息。若用户mike在线登录,则将打印出用户mike的信息。
3.Shell变量
在Linux中,用户可以设置自己的环境,特定的Shell环境是由一些变量和这些变量的值来决定的,我们称这些变量为Shell变量。一个Shell变量是一个标识字符串,它的值可以是一定范围内的字母和数字。Shell变量分为两类:标准Shell变量和用户自定义的变量。
4.Shell常用命令
下面是一些常用的Shell命令:
(1)password更改帐号密码
(2)man联机帮助
(3)rlogin主机名[-l用户名]远程登录
(4)ls[-atFlgR][文件名]
列出文件和当前目录下的文件名
-a列出以“.”开始的文件名
-t依照文件最后修改时间的顺序列出文件名
-F列出当前目录下的文件名及其类型
-l列出目录下的所有文件的详细信息
-lg同-l,并显示文件所有者工作组名
-R显示目录下及其所有子目录的文件名
(5)cd[路径名文件名] 改变工作目录
(6)cp[-r] 源文件目的文件复制文件
(7)mv 源文件目的文件更改或移动文件或目录名称
(8)mkdir 目录名建立新目录
(9)rmdir 目录名或rm目录名删除文件
(10)pwd 列出当前所在的目录位置
(11)cat 文件名连接并查看文件
(12)more文件名或cat文件名|more分页查看文件内容
(13)du[-s] 目录查看目录所占用的磁盘容量
(14)rcp[-r]源地址主机名:目的地址
文件传输(拷贝文件或目录至远程工作站)
rcp[-r]主机名:源地址目的地址
文件传输(自远程工作站拷贝文件或目录)
ftp主机名或ftpIP地址
文件传输(本地工作站与远程工作站之间文件传输)
(15)chmod[-R]模式文件名或目录名
改变文件或目录的读、写、执行权限
chmod[-R]用户名文件名或目录名
改变文件或目录的所有权限
(16)groups 检查自己所属的工作组名称
(17)chgrp[-r] 工作组名文件名或目录名改变文
件或目录工作组所有权限
(18)ln老文件名 新文件名文件的链接
(19)grep字符串文件名 文件中字符串的查找
(20)whereis命令 显示命令的路径
which命令显示命令的路径,
及使用者所定义的别名
whatis命令 显示命令功能的摘要
(21)findsearch-path-namefilename-print
搜索指定路径下某文件的路径
find/name文件名-print
从目录的根开始搜索想要的文件与目录
(22)diff[-r]文件名1文件名2比较文件或目录的内容
(23)lpr[-p打印机名]文件名一般文件的打印
(24)troff[-p打印机名][-man][-ms]文件名
troff文件的打印
(25)lpq[-p打印机名]检查打印机状态、打印作业
顺序号和用户名
lprm[-p打印机名]用户名或作业编号
删除打印机内的打印作业(用户
只可以删除自己的打印作业)
(26)进程控制命令
ps[-aux] 查看系统中的进程
-au 查看系统中属于自己的进程
-x 查看系统中所有用户的进程
-aux 查看系统中包含系统内部及所有用户的进程
kill[-9]PID结束或终止进程(PID为利用ps命
令所查出的进程号)
命令& 在后台执行进程的方式
jobs 查看正在后台中执行的进程
kill%n 结束或终止后台中的进程
(27)Shell变量
set 查看Shell变量的设定值
set变量=值 设定Shell变量
unset变量 删除Shell变量
(28)环境变量
setenv 查看环境变量的设定值
echo$环境变量 显示指定的环境变量NAME的设定值
setenv环境变量word 设定环境变量
unsetenvNAME 删除环境变量
(29)别名命令
alias 查看自己目前定义的所有命令及所对应的别名
alias命令 查看指定的命令的别名
alias命令‘命令行’ 定义命令的别名
unalias别名 删除所定义的别名
(30)历史命令
sethistory=n 设定命令记录表的长度
history 查看命令记录表的内容
!! 重复执行前一条命令
!n 重复执行命令记录表编号为n的命令
!!:p 显示前一条命令的内容
(31)文件压缩命令
compress 文件名压缩文件
compressdir 目录名压缩目录
uncompress 文件名解压缩文件
uncompressdir 目录名解压缩目录
(32)命令1|命令2 将命令1的执行结果送到命令2,作
为命令2的输入
(33)输入/输出控制
命令<文件 将文件作为命令的输入
命令>文件 将命令的执行结果送至指定的文件中
命令>!文件 将命令的执行结果送至指定的文件
中,若文件已经存在,则覆盖
命令>&文件 将命令执行时屏幕所产生的任何信息
写入指定的文件中
命令>>文件 将命令执行的结果附加到指定的文件中
命令>>&文件 将命令执行时屏幕所产生的任何信息附
加到指定的文件中
(38)ping主机名或pingIP地址检查远程系统是否正常
(39)电子邮件使用
mail-s“主题”用户名@地址<文件
将文件当作电子邮件的内容送出
mail用户名 传送电子邮件给本系统用户
mail用户名@接受地址
传送电子邮件至外地用户
5.其它命令
1)后台命令
用C编译把C语言源文件编译成目标文件时,若命令中使用了任选项-o,就可以使目标文件具有指定的文件名,若不使用的话,得到的目标文件名将是a.out。
为了提高系统和用户的工作效率,可以让执行较长而且执行过程中不一定需要与用户进行交互作用的命令,放在后台执行。此时只要在命令后加一个后台命令运算符“&”,Shell解释程序就不再等待执行此命令的子程序结束,便开始处理下一条命令。例如:
ccfile1.c;edfile2.c
ccfile1.c&edfile2.c
这两组命令中,前一组是编译file1.c结束后才开始编辑file2.c;后一组编译file1.c的工作在后台进行,而前台可同时编辑file2.c。
2)环境变量
Shell提供了对环境变量的维护能力。环境变量的表示形式为“名字=值”的字符串。其中“名字”可以是不包含美元符号($)且没有空格的任何字符串。“值”可以是含空格的任意字符串。许多环境变量都与用户登录标识紧密相连,并与系统内已安装的软件以及用户的习惯有关。
用户设置一个环境变量时,需要向Shell提供一对“名字=值”的具体内容,如:
$SAMPLE=“Howareyou?”习惯上环境变量名都用大写字母表示。如果“值”包含空格,则必须用双引号括起来。环境变量不用预先说明,如果环境变量已存在,则覆盖原来的值,不存在Shell就建立之,供以后使用。
环境变量的变量名前应冠以美元符号($),这样Shell才能识别出随后的环境变量并取其值;否则将其视为纯字符串。
用echo(回显)命令可以显示环境变量的值,如:
$echo$SAMPLE回显:
Howareyou?
$echoSAMPLE
回显:
SAMPLE
$XYZ=“catfilename1”
$echo$XYZ将执行命令:
$catfilename1
用env或set命令可以显示当前已经赋值的所有环境变量。用echo显示不存在的环境变量时,将什么都不显示。
环境变量PSI(promptsymbol,levelone,第一级提示符)的内容是Shell提示符,普通用户的PSI值为美元符“$”。我们可以通过修改PSI的值来改变提示符。
3)输入输出重定向
一般Shell的标准输入、输出设备分别为终端的键盘和显示器。但用户可同时指定文件或其它设备作为Shell的输入、输出设备,这称为输入、输出重定向。例如,ls命令是在终端屏幕上列出当前目录内容。而命令
$ls>file
则是输出重定向。这时,当前目录的内容不再列到显示器上而是送入文件file中。如果file文件不存在,则建立之,否则先将原文件长度截短为0。命令
$ls>>file
也是输出重定向,它将当前目录内容送入文件file中。如果file文件不存在,则建立之;若file存在,则输出到文件file的末尾。
又如命令
$catfile1file2>/dev/lp
也是输出重定向。/dev/lp是一个特别文件,它代表行式打印机。此命令顺序地把file1,file2的内容打印出来,而不再显示在屏幕上。
标准输入也可以重定向。例如命令
$wc<file
这里,wc是一条Shell命令,它的功能是将标准输入文件中包含的行数、字数送向标准输出,即在终端屏幕上显示出刚刚敲进的文件的行数和字数。现在使用了标准输入转向符“<”,wc命令就可以将指定文件file中的行数、字数显示出来。
标准输入和标准输出还可以同时重定向。例如:
$a.out<file1>file2
此命令的功能是执行目标程序a.out,以file1为标准输入,以file2为标准输出。
大部分命令都可以用标准错误信息流显示全部错误信息。因为不希望将错误信息与正常输出混在一起,所以系统将这些信息写到另一流中。如果设置一个不正确的命令之后,即可以看到错误信息的显示。
使用操作符2>或2可以重定向标准错误输出。具体选用哪一种取决于是希望建立新文件还是向现存文件追加数据。
系统对标准I/O通道赋予了特定数值:0对应标准输入,1对应标准输出,2对应标准错误输出。
4)管道命令
对于两个进程之间的信息传送,UNIX系统提供了一种简单、方便的工具,即管道(pipe)。管道实际上是连接两个用户进程的一个中间文件,一个进程负责向它写入,另一个进程负责由它读出。系统专门为管道中的信息传送提供了自动同步,即接收进程将自动地按照发送进程发送的次序来接收信息。
除了在程序级可使用pipe系统调用外,用户还可以在作业控制级直接使用Shell的管道命令,这只要在两条命令之间加上管道符“|”即可。例如命令:
$catfile1file2|wc
此命令把file1,file2连接后产生的文件作为wc命令的输入,即在屏幕上显示出file1和file2连接之后的总行数和总字数。它相当于如下命令序列:
$catfile1file2>file3
$wc<file3
$rmfile3
Shell除了简单命令、后台命令、标准输入输出重定向命令、管道命令之外,还可以构成组合命令(即命令表command_list),支持“?”、“*”、“[...]”等文件名参数的匹配方式以及特殊字符的转义等。
5)命令返回值
除了标准输入和标准输出外,所有Shell命令都会返回一个不可见的数字返回码,命令成功结束时返回值为0,否则返回一个非0值(1~255),每条命令对于不同的失败情况都有不同的返回值。使用$?可以查看该返回值,如:
$echo$?
0
6)反引号操作符(`)
一条命令的标准输出也可以赋予环境变量,此时需要使用反引号操作符。使用这种方法时必须谨慎,因为环境变量内容的长度最多为256个字符,所以命令的返回值不能超过256个字符。
$SAMPLE=`echo$LOGNAME`
$echo$SAMPLE
user1
$
7)其它
Shell提供了一些操作符(;),可将多条命令组合为一条命令。
$ls;echo$SAMPLE
filename1
filename2
user1
$2.3.2Shell过程
Shell不仅可以从终端上读入命令行,而且可以从文件中读入命令行并逐个解释执行文件中的命令。用Shell命令语言编制成的程序文件称为Shell过程。Shell过程中除包括各种合法命令外,还可以包括类似于一般程序设计语言中的控制流语句,如条件选择语句if-then-else,分支语句in-case,循环语句for-do,while-do,until-do
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供货协议合同范例酒水
- 厂区监控维保合同范例
- 确保资金使用效率的管理措施计划
- 公共场所安保人员培训计划
- 幼儿园多元智能发展计划
- 心理契约与员工忠诚度计划
- 新媒体对传统阅读习惯的影响计划
- 改进供水调度系统计划
- 《清镇市站街镇龙滩前明铝铁矿山有限公司清镇市站街镇龙滩前明铝铁矿(延续)矿产资源绿色开发利用方案(三合一)》评审意见
- 四川省钒钛产业投资发展有限公司四川省盐边县红格南钒钛磁铁矿二合一方案情况
- 计算机系统原理13015习题答案
- 临床实验室精液常规检验中国专家共识
- 人工智能伦理与社会影响的讨论
- 【音乐】缤纷舞曲-青年友谊圆舞曲课件 2023-2024学年人音版初中音乐七年级上册
- DB-T29-260-2019天津市建筑物移动通信基础设施建设标准
- 吉利汽车经销商运营手册
- 《如何处理人际关系》课件
- 社区消防网格员培训课件
- 太阳能路灯施工方案
- 前列腺炎的护理课件
- 外墙防水胶验报告模板
评论
0/150
提交评论