清华大学UNIX讲义第1章.ppt

上传人:max****ui 文档编号:12194057 上传时间:2020-05-08 格式:PPT 页数:53 大小:357.50KB
返回 下载 相关 举报
清华大学UNIX讲义第1章.ppt_第1页
第1页 / 共53页
清华大学UNIX讲义第1章.ppt_第2页
第2页 / 共53页
清华大学UNIX讲义第1章.ppt_第3页
第3页 / 共53页
点击查看更多>>
资源描述
实用UNIX教程,普通高校本科计算机专业特色教材精选,蒋砚军高占春编著,总目录,第1章UNIX简介第2章基本UNIX实用程序第3章全屏幕编辑程序vi第4章UNIX的文件和目录第5章C-shell的交互功能第6章B-shell及编程第7章进程控制与进程间通信第8章网络程序设计,第1章UNIX简介,1.1UNIX的发展过程和标准化1.2系统的登录与退出1.3使用系统命令,1969年,从事MULTICS研究的贝尔实验室的KenThompson和他的同事DennisRitchie,在DEC的PDP-7型计算机上编写了一个简易的新型操作系统,是一个两用户的多任务操作系统。这套系统取名UNIX。UNIX在后来取得了巨大成功。UNIX最初用汇编语言编制,在PDP-7上实现。DennisRitchie发明了C语言,并与Thompson用C语言改写了UNIX的源程序,为以后的开发和移植奠定了基础。,1.1UNIX的发展过程和标准化1.1.1UNIX的发展过程,随后,UNIX被移植到各种各样的计算机系统上,UNIX也经历了二三十年的发展,引进了许多新的技术,成为更加成熟的操作系统。UNIX发展过程中,曾经有两大流派,一个是以UNIX的鼻祖AT&T最早于1983年发表的UNIXSystemV,最新的版本是Release4,简写为SVR4。另一个是学术派的加州大学伯克利分校计算机系统研究小组(CSRG)发表的BSDUNIX(BerkeleySoftwareDistributionsUNIX),比较有影响的版本是4.3,记作4.3BSD。早期的Internet上的大部分计算机都运行UNIX。两种流派的UNIX随着不断的发展,互相吸收对方的新技术,趋于统一到逐渐完备的POSIX标准。,UNIX后来成为了AT&T贝尔实验室操作系统产品的注册商标,所以,许多操作系统由于商业上的原因,在命名时不能够使用UNIX这个字眼,如IBMRISC/6000小型机上的AIX,Sun工作站上的SunOS以及后续版本Solaris,CDC小型机上的EP/IX,惠普Hewlett-Packard的HP-UX,等等。几乎所有的工作站平台上都运行UNIX操作系统。,UNIX成为一种软件商品后,其源代码也就不再随意公开。AndrewS.Tanenbaum教授在UNIX的基础上开发了教学版的UNIX,取名MINIX,意为Mini-UNIX。1991年,芬兰学生LinusBenedictTorvalds,在PC上独立编写了基于Intel80386体系结构的UNIX系统,名为Linux。世界各地的软件爱好者都可以通过Internet免费获得Linux的全部源代码和二进制发行版本。现在,Linux更是发展迅速。从比PC还要简单得多的小型嵌入式环境,一直到大型的服务器,都有Linux操作系统在运行。,狭义地说,UNIX指的是一个多用户多任务分时操作系统内核(kernel)。内核的功能是用于控制并管理计算机的资源,使多个用户可以同时访问这些资源。内核负责进程的创建、控制、调度,为进程分配内存和外设,提供文件系统的管理功能。广义地说,UNIX不仅指系统内核,它还是一个程序设计环境,为程序员提供了丰富的软件开发工具,包括许多UNIX的实用命令、编辑器、编译程序、调试工具、数据复制和备份、打印、数据库等。,1.1.2什么是UNIX,UNIX被移植到各种各样的硬件平台上,即使同一种硬件平台上,也会有许多种不同的UNIX操作系统软件产品。国际性组织制订了一些UNIX标准,供用户进行可移植性程序设计时作为参考。这些标准都是仅仅定义系统的界面,不关心系统内部的实现。主要有以下几种:(1)1986年,IEEE制定了IEEEP1003标准,这套标准称为POSIX(PortableOperatingSystemInterface)。POSIX定义了一整套的作业接口,包括系统调用、库函数、公共命令等。这套标准非常活跃,一直在不断演化和完备。,1.1.3UNIX的标准化,(2)另一个促使UNIX标准化的组织是X/Open。X/Open最早在1984年由几家欧洲计算机公司组成。1989年发表了X/OpenPortabilityGuide第3版,称作XPG3。(3)AT&T制订的UNIX标准SVID(SystemVInterfaceDefinition),与POSIX兼容。(4)1988年,IBM、HP、DEC等几家计算机厂商成立了OSF(OpenSoftwareFoundation),1990年OSF发表了OSF/1。(5)FIPS(FederalInformationProcessingStandard,联邦信息处理标准)由美国政府出版,用于指导美国政府的计算机系统采购。1989年出版FIPS151-1,规定了必须支持的POSIX可选功能。,当多个终端,无论是一个真正意义上的终端,或者仿真终端,还是网络虚拟终端,同时登录到同一台UNIX系统时,UNIX就可以容纳多个用户同时上机。这也是UNIX作为多用户多任务分时操作的操作系统设计的初衷和基本功能。在上机过程中,终端只负责把用户输入的按键信息送到UNIX主机,并把主机发来的信息在屏幕上显示。,1.2系统的登录与退出1.2.1UNIX的主机和终端,主机和终端除了交换这些简单的可见的字符信息以外,还有一些控制信息,叫做“终端转义序列”。终端支持很多转义序列,完成光标移动,清屏,设置字符的颜色,闪烁,下划线,字体大小,等等,甚至可以绘图,可以控制连接在终端上的打印机、刷卡器等。不同的终端类型,会支持不同的转义序列,对转义序列有不同的解析。主机和终端之间的流量控制功能是必要的。流控方式有硬件方式和软件方式。硬件方式利用RS-232接口的RTS和CTS信号线,软件方式利用Xon和Xoff两个用于流量控制的控制字符。这两个控制字符分别被定义为ASCII码的17和19(十进制表示),键盘按键Ctrl+S和Ctrl+Q分别产生这两个字符。,用户在上机前应向系统管理员申请一个账号。UNIX系统有一个超级用户,用户名为root,在系统安装时创建,作为系统管理员。随后创建的用户,是普通用户。超级用户负责系统的维护,包括创建和删除用户账号等。以root用户身份操作时,要特别小心,因为他不受UNIX文件权限的制约。当终端上出现登录提示符login:后,键入登录名,然后系统给出提示password:,提示输入口令。为了保密起见,口令在键入过程中不回显。登录成功之后,就出现了shell提示符,如同DOS中的C。,1.2.2登录,有些UNIX系统登录成功后会询问用户的终端类型,这时输入终端类型,UNIX主机将按照这个终端类型定义的转义序列发送控制信息,所以必须和所使用终端的类型兼容。登录shell的种类由系统管理员创建用户时选定。常见shell的提示符:$Bourneshell(/bin/sh)%Cshell(/bin/csh)$Kornshell(/bin/ksh)#当前用户为超级用户root在SystemV中,默认的shell为/bin/sh。在其他的UNIX中,系统根据自身情况设定。shell提示符可以根据用户的需要和喜好,通过shell命令改变。,在shell提示符下按Ctrl+D键,或者键入logout命令,或者键入exit命令,退出本次登录。退出成功的标志是UNIX再次给出login:提示符。使用RS-232串行通信口连接UNIX的传统终端和仿真终端的用户,在某些设置情况下,当重新打开终端电源或者重新启动仿真终端软件的时候,UNIX会在以前已经登录的基础上继续工作。因此用户要特别注意。退出成功的标志是UNIX再次给出login:提示符,这时,才可以安全离去。使用TELNET的网络虚拟终端,由于实现的机制不同,不会出现这样的情况。,1.2.3退出,UNIX主机的开机和关机工作由系统管理员完成,普通用户不允许关机。在关掉UNIX主机电源之前必须先执行关机命令shutdown,否则,可能会导致系统中文件数据的丢失,甚至导致系统瘫痪,下次无法启动系统。关机前shutdown命令的其中一项功能是将高速缓冲区数据真正写到磁盘上。,1.2.4关机,在Shell提示符下可以键入UNIX命令。在UNIX系统中组成命令的英文字母大小写有区别。在UNIX中,最常用的命令一般由两三个字母构成。,1.3使用系统命令,几乎所有的UNIX系统都提供联机手册(onlinemanual)。内容包括:各种命令的使用说明书,系统调用的使用手册,C语言和其他语言的库函数使用手册,系统配置文件的格式,等等。命令:man命令名man,取自manual的前三个字母。用法:man名字man章节号名字,1.3.1man:查阅联机手册,一般UNIX系统章节编号为:1用户命令2系统调用3库函数如:manman查命令man的使用手册。manls查命令ls的使用手册。manstrcpy查strcpy函数的使用手册。mansleep由于有一个命令名为sleep,也有一个函数调用名为sleep,在这种情况下,man可能只列出命令sleep的使用说明。如果要查阅函数调用sleep的使用说明,则可以在man命令中指定章节号,在SCOUNIX系统中的命令为:,manSsleep在man列出的说明书中,首先列出函数的基本功能和语法格式。对于C语言的调用,列出需要#include的头文件名以及链接时需要的函数库。说明书的“Seealso”段中,会含有与此命令和调用有关的其他项目的名字和章节号。最后的“Standardsconformance”段列出了该函数调用所遵循的UNIX标准。,1date:读取系统日期和时间该命令列出系统当前的日期和时间值。例如:$dateWedMay1913:54:55BEIJING2004date命令还可以根据用户的需求,打印出符合用户需求的时间和日期格式。如:$date+%Y.%m.%d%H:%M:%SDay%j2004.05.1913:55:47Day140没必要一项项记住这些控制符。需要的时候可以通过mandate查阅联机手册。,1.3.2获取系统情况,2who:查看已登录系统的用户命令who列出当前已登录进入系统的所有用户,输出结果如下所示:$whoroottty1Jul510:30amliangtty2Jul510:18amjiangtty3Jul510:19amsongtty4Jul510:20amfangtty5Jul510:20am$whoamijiangtty3Jul510:19am$whoamijiang,其中,第一列列出用户名,第二列列出该用户登录系统所使用的终端设备的设备文件名。在UNIX系统中设备和文件统一管理,每一设备都在文件系统中有一个文件名,同普通磁盘文件所不同的是文件类型属于特殊文件。一般都将设备文件放在目录/dev下。终端设备文件的名字一般有tty前缀,网络虚拟终端有的用ttyp前缀,p是pseudo的缩写,也有用vty前缀的。终端设备文件类似于DOS中的设备文件CON,但UNIX中的终端设备文件取名不像DOS那样必须强制为CON,而且DOS磁盘文件系统中不存在一个名为CON的文件名。UNIX的文件系统中的确有相应命名的文件,用户还可以使用命令mknod根据自己的喜好改成别的名字。,使用命令whoami,可以列出当前终端上的登录用户、登录终端和登录时间。命令whoami和whoami命令不同的是,前者仅列出当前终端上登录的用户名。使用命令who可以得知某用户的登录时间。对整个系统来说,命令uptime可以得知UNIX系统自启动后到现在的运行时间(系统的年龄),当前登录系统的用户数,以及近期1min、5min、15min内系统CPU的负载情况。,与who命令类似的有w命令(Who&What)。w命令列出终端的空闲时间(IDLE);JCPU是终端上正在运行的作业占用的CPU时间,包括前台程序和后台程序;PCPU是终端上正在运行的前台程序占用的CPU时间;WHAT列出终端上的用户正在执行什么命令。$uptime10:35:22up18min,5users,loadaverage:0.55,0.73,0.43$w10:35:26up18min,5users,loadaverage:0.51,0.72,0.43USERTTYFROMLOGINIDLEJCPUPCPUWHATroottty1-10:30am0.00s0.15s0.01swliangtty2-10:18am1:430.05s0.01sftpjiangtty3-10:19am28.00s0.08s0.08s-bashsongtty4-10:20am1:470.04s0.00stelnetfangtty5-10:20am23.00s0.11s0.08svim.profile,3tty:打印出当前终端的设备文件名使用命令tty可以打印出当前终端的设备文件名。$tty/dev/tty1,对于普通用户可以使用passwd命令更改自己的登录口令,在更改前系统会先验证原来的口令。与一般的信息系统一样,输入口令时,没有回显,输入新口令时,要求输入两遍,两遍完全相同时才确认。在口令字符中,英文字母的大小写有区别。对于超级用户,也可以使用passwd命令修改自己的口令,另外,root用户还可以使用类似下面的命令:passwdliu,1.3.3passwd:更换用户口令,根据系统的提示,可以将用户liu的口令强迫设置为某一已知新口令。但是,超级用户root无法读取其他用户的当前口令。当一个普通用户忘记了口令时,可以请求超级用户执行这一操作,然后使用一个设定口令登录后,再修改口令。在修改超级用户root的口令时要特别注意,超级用户的口令丢失会很麻烦,有的系统会需要一套很复杂的操作,才能重新获取一个新的有效口令,有的系统甚至会永远无法再次以超级用户的身份登录进入系统。,无论是UNIX还是其他的信息系统用户登录时,很多时候要求用户设置自己的口令。用户口令的设置,应当本着对自己容易记忆,对其他人不容易记忆的原则,以免被别人猜到。对于那些打字不熟练的用户来说,口令组成的各字符的按键还应当尽量零散分布在键盘的不同区域。输入时,左右手的不同手指迅速地交替击键,以免被别人通过观察按键位置窃取口令。口令的输入应当尽量做到熟练。在为系统选择口令时选用仅含字母和数字的组合,以免遇到不必要的麻烦。,1write命令使用这一命令可以直接给登录在系统的其他用户发消息。步骤如下。(1)用who命令确定接收消息的用户现在是否已注册。如果用户未注册则无法使用write命令。然后输入命令:write用户名,如:writeliang,1.3.4与其他用户通信,(2)键入消息。键入多行信息时用回车分开,结束消息,用Ctrl+D,Ctrl+D是“文件结束”键。如果对方处于拒绝消息状态,则通信失败。对方收到的消息会直接显示在终端屏幕上。write命令也可以使用输入重定向,格式为:write用户名文件名如:writeliang(在此直接按Enter键退出与本地telnet仿真程序的会话,继续与远程计算机会话),$tty/dev/pts/1$exitConnectionclosed.从键入telnet命令,到退出远程登录期间,根据前边的提示:Escapecharacteris.随时可以按Ctrl+键,调出本地终端仿真程序telnet的命令提示符,可以使用一些命令控制终端仿真程序的运行。有的系统会在这里允许用户设置仿真终端的终端类型;允许用户设置一个捕获文件的文件名,从此以后,与远端计算机的所有会话内容除了在屏幕上显示之外,还存入到一个文本文件中,以备事后查阅和分析。,连接到远程计算机,出现login:提示符,如果无法输入正确的用户名和口令,目标系统会反复询问用户名和口令,也就无法成功登录到Shell中以输入exit命令的方式中止这次登录。或者,登录成功后,在远端主机上运行的程序出错或者其他原因,无法回到Shell提示符状态。这样,就可以按下Ctrl+键调出终端仿真程序telnet的命令提示符telnet,输入close关闭这个连接,结束远程登录。,2ftp:文件传送与文本文件的格式使用ftp命令可以直接将文件传到其他计算机上,或者,从其他计算机上获取文件。远程的计算机,必须已启动FTP服务,才可以使用ftp命令与对方计算机传送文件。一般UNIX都默认有这项服务。,【例1-2】ftp会话的过程。具体如下:$ftp202.162.120.115(在shell中输入ftp命令).Connectedto202.162.120.115.220RISC6000FTPserver(Versionwu-2.6.1(1)ThuJul2019:10:14DFT2000)ready.Name(jiang):jiang(输入远程计算机的用户名和口令)331Passwordrequiredforjiang.Password:*230Userjiangloggedin.ftpdir(在ftp提示符下,可以输入ftp的命令,dir用于查看远端计算机的目录)200PORTcommandsuccessful.150OpeningASCIImodedataconnectionfor/bin/ls.total522776-rw-r-1100328Aug302003.sh_history-rw-r-r-1100181248Sep92003paper01.txt-rw-r-r-1100996987Sep282003paper02.txt-rw-r-r-110027703298Mar132003linux-2.4.tar-rw-r-r-110027699283Apr902:13linux.tar.Z-rw-r-r-1100207575995May1322:55books.tar.Z-rw-r-r-1100992094Sep92003src.tar.Z226Transfercomplete.ftphelp(输入help命令,打印出ftp的所有命令列表)Commandsmaybeabbreviated.Commandsare:!imagerecv,$lcdregetaccountlocalreinitialize.(省略)ftpgetsrc.tar.Z(get命令将远程计算机的文件传到本地)200PORTcommandsuccessful.150OpeningASCIImodedataconnectionforsrc.tar.Z(992094bytes).226Transfercomplete.995934bytesreceivedin0.4596seconds(2116Kbytes/s)local:src.tar.Zremote:src.tar.Zftpftpputmyfile(put命令将本地计算机的文件传到远程主机)200PORTcommandsuccessful.150OpeningASCIImodedataconnectionformyfile.226Transfercomplete.995934bytessentin0.2397seconds(4057Kbytes/s)local:myfileremote:myfileftpbye(bye命令退出ftp)221-Youhavetransferred1988028bytesin2files.221-Totaltrafficforthissessionwas1989427bytesin3transfers.221Goodbye.,有些FTP服务器,允许匿名登录。匿名登录时,使用用户名anonymous,口令输入时应当输入自己的E-mail地址,有的系统允许随意输入,或者不问口令。连接到远程计算机之后,就可以传送文件。如果操作员在一定时间内(例如:15分钟)没有任何操作,那么远程计算机会自动关闭连接。在ftp提示符下,可以使用ftp的命令。输入help可以打印出ftp支持的命令列表。表1-1列出一些ftp常用命令。,表1-1ftp常用命令,使用ftp传送文件时,应当特别注意“传送模式”。在前面的ftp会话举例中,执行putmyfile命令,系统会给出下列的提示:150OpeningASCIImodedataconnectionformyfile.在这里,文件传送使用ASCII方式,这也是默认的传输模式。使用ASCII方式,在UNIX和Windows之间传送文件时,ftp会自动在UNIX和Windows之间进行文本文件的格式转换,接收时ftp检索出文件中的CR-LF序列,替换为LF;发送时,把LF替换为CR-LF序列。所以导致传输前后文件的大小不同。这种自动转换,有时会在不期望的时候发生。,在ftp命令提示符下使用binary命令,就可以设置为二进制模式,或者叫IMAGE模式。设置了binary之后,随后在该ftp连接上的文件传送都使用BINARY模式,不再进行转换。如果要期望再使用ASCII方式,那么键入命令ascii。【例1-3】ftp使用二进制方式传输文件的例子。具体如下:ftpbinary200TypesettoI.ftpgetA301211.JPG200PORTcommandsuccessful.150OpeningBINARYmodedataconnectionforA301211.JPG(805603bytes).226Transfercomplete.805603bytesreceivedin0.2035seconds(3865Kbytes/s)local:A301211.JPGremote:A301211.JPG,在UNIX与Windows之间传送文件时,必要的时候检查文件大小,以防止不期望的转换发生。在Windows中,使用InternetExplorer,输入类似下边的URL后,可以登录到UNIX的FTP服务。ftp:/jiang:akigoo2201.203.112.108其中,jiang为用户名,akigoo2为该用户的口令,201.203.112.108是远端计算机的地址,也可以使用类似主机名字。或者,使用匿名ftp,直接输入下边的网址:ftp:/201.203.112.108。在使用文件图标拖曳的方式上传(或下传)文件时,默认使用BINARY方式,有些FTP工具,如FlashGet,操作员可以自行设置,根据文件名的后缀,自动选择ASCII方式或者BINARY方式。,1cal:打印日历命令cal的用法为:calmonthyear【例1-4】cal命令用法举例。cal打印当前月份的日历。cal2005打印2005年的日历。cal102006打印2006年10月份的日历。根据命令的语法,要想指定月份,必须指定年份。,1.3.6几个实用工具,$cal102006October2006SunMonTueWedThuFriSat12345678910111213141516171819202122232425262728293031,2bc:计算器在UNIX中有一个计算器程序bc,这个bc程序的功能非常复杂和强大,它支持数学函数库、变量、循环等许多编程功能。另外,这个计算器程序还可以进行任意精度的计算。精度是用时间换来的。使用这一命令时,输入bc命令,然后输入表达式,每输入一个表达式按Enter键后,系统给出表达式的值。退出计算器程序,按Ctrl+D(文件结束)键。,【例1-5】使用bc命令的例子。其中括号内的提示使用bc时的注意事项。$bc(启动bc命令)18*(5+5)(输入一个表达式,表达式中可以使用括号)180(打印出表达式的计算结果)1024*40964194304(下边是一个高精度计算的例子。在32位系统中,数据线宽度32位,CPU一次可运算的最大整数是4G,这也是C语言中无符号整数的最大值,下边的两个数以及它们的乘积都超过了4G)1234567890123456789012345*9876543210987654321098765121932631137021795226184960347203210713595492539252.5*2.1(浮点数运算)5.2(运算结果应当是5.25,但是由于精度太低,未能取得期望的值)1/1130(浮点数运算结果的精度太低,未能取得期望的值)scale=40(上述语句设置bc的内部控制变量,使得计算结果可保留到小数点后40位。很糟糕,scale的默认值为零,才有上述两次计算结果的不如意)2.5*2.15.25(重新计算,得到正确结果)1/113.0088495575221238938053097345132743362831,(运算结果是无限循环小数,保留40个小数位)(在这里按下Ctrl+D键,退出bc程序,返回Shell,出现Shell提示符)$bc-l(使用bc命令带-l选项,bc的内部控制变量scale自动被设置为20。再进行浮点运算2.5*2.1或1/113会得到期望的结果,期望保留更多的小数位数,可以自行设置scale控制变量。-l选项原意是library,定义了一个bc使用的任意精度的数学函数库,包括正弦函数s(x),余弦函数c(x)等,另外,将scale初始设置为20)2.5*2.15.251/113.00884955752212389380p=2.346901(bc允许使用az的26个寄存器,后边的计算如果经常使用这个值,将它存入到寄存器p中)17.8*p41.7748378198.23*p465.22618523$在使用浮点数运算的时候,最好直接使用bc的l选项。有关bc命令的更丰富功能,可参阅命令手册。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!