《Unix程序设计环境课件:第1章 Unix基础》由会员分享,可在线阅读,更多相关《Unix程序设计环境课件:第1章 Unix基础(87页珍藏版)》请在金锄头文库上搜索。
1、Unix程序设计环境教学目的nUnix是一个历史悠久、功能强大的操作系统。nUnix在计算机操作系统发展历史上具有里程碑作用。nUnix是计算机专业教学和学术研究的首选操作系统之一。nUnix广泛应用于各种计算机、工作站和服务器上。n学习和研究Unix,对从事计算机和其他相关专业工作具有实际意义。n通过本课程,熟悉Unix知识和文化,培养Unix专业人才。课程教材n课程教材:Unix编程环境,美BrianW.Kernigham等著,陈向群等译,机械工业出版社,1999.10n参考教材:1.Unix环境高级编程,美W.RichardStevens著,尤晋元等译,机械工业出版社,2000.22.实
2、用Unix教程,美SteveMoritsugu著,安捷等译,清华大学出版社,2001.7教学内容第1章Unix基础第2章shell使用第3章文件系统第4章shell编程初步第5章过滤程序及编程第6章shell编程进阶第1章Unix基础1.1Unix历史和现状1.2Linux介绍1.3Unix基本操作1.4文件和常用命令1.5目录和常用命令什么是Unix?Unix系统组成Unix系统主要特性Unix系统发展历史和现状1.1Unix历史和现状1.1.1什么是Unix?Unix是一个操作系统的“家族”AIXIBM公司公司HP-UXHP公司公司SOLARISSUN公司公司IRIXSGI公司LINUX类
3、Unix.Unix是一个支持多任务的操作系统同时运行多个程序一个繁忙的系统在同一时间内能运行上百个甚至上千个程序Unix是一个支持多用户的操作系统在同一时间内,许多用户能同时使用同一个计算机系统Unix是为网络而设计的操作系统被设计来连接其他的计算机系统,并允许人们在网络上工作1.1.2Unix系统组成内核(Kernel):Unix系统的核心部分,包括硬件管理,进程管理,多用户管理,内部命令等shell:shell命令解释程序(用户和Unix内核的接口)实用程序(Utilities):Unix系统提供的各类软件工具,如文本编辑器,编译程序,开发工具等应用程序(Applications):用户开
4、发的各种应用程序内核内核shell实用程序实用程序应用程序应用程序1.1.3Unix 系统主要特性强大的shell功能完善的安全机制具备网络特性用一个简单的shell命令可以完成其它操作系统需要花费时间编写程序来实现的功能。把一些shell命令组合在一就起可以完成别的操作系统需要花费几条或几十条命令才能完成的功能。Unix基于多用户的环境,具有较好的安全机制,包括用户的管理、系统结构的保护以及文件的使用权限的管理等。在现代Unix系统中,强调内部通信机制以及外部设备的易接入性,增加的对TCP/IP协议的支持。使网络连接更加容易、更加敏捷。1.1.3Unix 系统主要特性用简单的设计技术和方法去
5、完成较复杂、较全面的功能支持多用户多任务的运行文件系统可以随意装卸具备良好的开放性和可移植性Unix系统中,所采用的最基本的设计思想是将复杂的问题进行分解,用最简单、最基本的功能模块的堆积、联合、组装来解决复杂的问题。多用户分时多任务调度管理策略。支持一个用户多种请求,支持几百个用户同时进行数据处理。文件系统是可以裁剪的,可根据需要构筑独特的文件系统并对其应用于某个硬件设备,使用时加载、用完后卸载。同时具备良好的安全性可移植性是指软件系统在不同的硬件平台上通过简单的重新编译即可运行,将操作系统从一个平台转移到另一个平台仍然能按其自身的方式运行的能力。开放性是指操作系统提供开放的编程模式,使用户
6、能够根据领域的特性优化(增加或修改)操作系统的支撑机制。Unix系统发展历史Unix系统版本演化过程Unix系统主要商业版本Unix系统发展现状1.1.4Unix系统发展历史和现状Unix系统发展历史1969年,KenThompson建议AT&TBell实验室在Multics操作系统的基础上开始开发Unix系统。1971年,AT&TUnixVersion1运行在DEC公司PDP-11/20计算机上。1973年,DennisRitchie用C语言重写了Unix系统的核心部分,产生了AT&TUnixVersion3。1974年,Thompson和Ritchie基于AT&TUnixVersion5在
7、ACM上发表了其经典论文Unix分时系统。1976年,AT&TUnixVersion6出现,被广泛应用于世界各地大学中。1979年,Bell实验室发布了著名的AT&TUnixVersion7,被认为是现代Unix系统的起点。Unix系统发展历史1982年,AT&T修改Unix版本命名方法,推出了第一个Unix商用版本UnixSystemV1。1983年,因为Unix的成就,ACM将图灵奖授予Thompson和Ritchie。1980年代后期,由USL(UnixSystemsLaboratories)负责开发各种面向工业界的UnixSystemV各种派生版本,相继推出了UnixSystemV2和
8、V3版本。1989年,UI(Unix国际组织)发布了Unix标准版本SystemV4。1990年,发布了UnixSystemVRelease4.2(SRV4.2)Unix系统发展历史1970年代末到1980年代初,加州大学Berkeley分校就对Unix系统进行了系统的研究和扩展,产生了BSD(BerkeleySoftwareDistribution)Unix版本。在AT&TUnixVersion7的基础上,开发出了BSDUnix版本,包括BSD3和BSD4。BSDUnix版本增加了Cshell、vi编辑器、Pascal语言、网络支持、虚拟内存,以及GUI工具。BSDUnix版本对UNIX最重
9、要的贡献之一是TCP/IP。BSDUnix有8个主要的发行版本中包含了TCP/IP:BSD4.1c、BSD4.2、BSD4.3、BSD4.3-Tahoe、BSD4.3-Reno、BSDNet2、BSD4.4以及BSD4.4-lite。Unix系统发展历史在Unix两大系列的基础上,一些其他软件公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统。有些基于SystemV版本,如IBM,HP公司。有些基于BSD版本,如Sun公司。Linux是一种自由和开放源码的类Unix操作系统,最初是由芬兰人LinusTorvalds出于个人爱好编写的,1991年9月Linux的第1个版本出现。目前,L
10、inux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Unix系统版本演化过程Unix系统主要商业版本软件公司软件公司Unix类型类型硬件平台硬件平台IBMAIXIBM RS/6000系列计算机HPHP/UXHP7000/HP9000系列计算机,HP VISBALIZE B/C/J-Class工作站SUNSolarisSun SPARC和Ultra SPARC工作站, Sun Enterprise系列计算机SCO OpenServer,Unix WareIntel系列CPU芯片SGIIrixIntel系列CPU芯片LinuxLinux
11、Intel系列CPU芯片Unix系统发展现状目前Windows系列的操作系统已经占据了桌面计算机统治地位。但是在高端工作站和网络服务器领域,Unix系统仍然具有无可替代的作用。作为Unix系统的一种替代产品,Linux已经成功安装在各种平台上。Linux系统可作为Unix系统普及和延伸的平台。Linux发行版本安装Linux系统1.2Linux介绍1.2.1Linux发行版本1、Arch Linux是朝向轻量及简单的Linux发行版本,是面向开发者角度定义,而非面向用户角度思考。2、RedHat Linux最早的Linux发行版本之一,拥有较高的市场占有率。3、Debian Linux迄今为止
12、最遵循GNU规范的Linux系统。目前最好的Linux发行版本之一,拥有超过14,000的软件安装包。4、Turbo LinuxTurbo Linux是拓林思公司发行的Linux版本,已在日本和中国取得了巨大成功,在美国也有一定业绩。5、SuSE LinuxSuSE是一家德国公司, SuSE Linux在欧洲市场拥有第一的市场占有率,具有界面美观、操作简易的特点。6、国产、国产Linux:中科红旗Linux,中标普华Linux 。Linux发行版本安装统计1.2.2安装Linux系统方案一:安装一个独立的Linux系统,如SuSE方案二:在一台计算机上安装Linux系统,其它计算机通过putt
13、y软件登录该计算机方案三:用CD或U盘直接启动LiveCDLinux,如Slax方案四:在Windows环境中安装:虚拟机+Linux方案五:在Windows环境中安装cygwin-一个在windows平台上运行的Unix模拟环境方案一安装SuSeLinuxSuSeLinux桌面配置界面SuSeLinux打印机配置界面SuSeLinux终端窗口SuSeLinux终端窗口方案二利用Putty远程登录Unix普通用户登录方案三SlaxLiveCDLinuxSlaxLiveCDLinux浏览器1.3Unix基本操作Unix用户登录Unix在Unix系统中工作退出UnixUnix关机和重新启动Unix
14、程序员手册1.3.1Unix用户Unix系统中有两类用户:1)root用户:命令提示符“#”超级用户,系统的拥有者,在系统中有且只有一个root用户,它可以在系统中完成任何操作。2)普通用户:命令提示符“$”系统可以创建许多普通用户,并为其指定相应的权限,使其有限地使用系统。Unix系统用户信息文件:/etc/passwd创建Unix用户创建新用户:#useraddd/home/user001user001改变用户目录属主:#chownuser001:other/home/user001为用户设置口令:#passwduser001删除用户#userdeluser0011.3.2登录Unix用户
15、登录步骤:1)输入用户名,系统根据该用户名来识别用户;2)输入口令,该口令是用户自己选择的一个字符串,是登录系统时识别用户的唯一根据。登录方法(1)直接登录Unix:login:johnpassword:*Youhavemail$登录方法(2)在Unix系统中,切换成另一用户:$su切换成root用户password:$suluser 切换成另一用户password:1.3.3在Unix系统中工作$dateThrSep3114:10:25EDT2000$1.3.4退出Unix退出Unix:3种方法$exit或$或$logout退出后系统显示:login:退出Unix$dateWedSep231
16、0:15:25EDT2009$exitlogin:超级用户登录普通用户登录1.3.5Unix关机和重新启动1.shutdown命令2.halt命令3.reboot命令1.Shutdown命令Shutdown命令是用来关闭Unix操作系统的。关闭系统或者是重新启动系统的操作只有管理员才有权执行。Unix系统在工作时会使用部分内存作缓存区,如果内存上的数据还没有写入硬盘,就把电源拔掉,内存就会丢失数据,如果这些数据是和系统本身有关的,那么会对系统造成极大的伤害。所以在关机之前执行三次同步指令sync,可以用分号“;”来把指令合并在一起执行,如:#sync;sync;sync举例#shutdown(
17、内置2分钟关机,并发送消息用户)#shutdownhnow(系统立刻关机)# shutdown r now (系统立刻重启,相当于reboot)#shutdownh20:25(系统会在今天的20:25关机)#shutdownh+10(系统会在十分钟后关机)如果在关机之前,要传送信息给正在机器上的使用者,可以加“-q”的参数,则会输出系统内置的shutdown信息给使用者,通知他们退出Unix。2.halt命令#halt输入halt命令,系统就会开始进入关闭过程,其效果和shutdownhnow是完全一样的。3.reboot命令#reboot输入reboot命令后,系统会将一个一个的服务都关闭掉
18、,然后再关闭文件系统和硬件,接着机器开始重新自检,重新引导,再次进入Unix系统。1.3.6Unix程序员手册在Unix系统中,一般都有相应的联机帮助手册,查阅方法:man命令名man命令名Unix程序员手册手册共分为8个分册,各分册用数字1至8表示,在每个分册中的各项则按字母顺序排列。1.命令2.系统调用3.函数4.特殊文件5.文件格式及转换6.游戏7.宏和语言8.维护Unix程序员手册举例:$mancp=man1cp$man1ls$man2open$man3printf$man4tty$man5/etc/passwd1.4文件和常用命令Unix文件文件相关命令命令提示符1)root用户:#
19、2)普通用户:$Unix命令文件相关命令文件相关命令目录相关命令目录相关命令进程管理命令进程管理命令显示状态命令显示状态命令磁盘管理命令磁盘管理命令系统管理命令系统管理命令1.4.1Unix文件文件:Unix文件是一个字符流,没有文件结束符。命名规则:文件名组成:字母,数字,下划线特殊字符可以用,但最好不用。Unix文件类型(1)普通文件(Regularfile)文件内容可以是文本或二进制格式数据。(2)目录文件(Directoryfile)包含其它文件的名字以及指向与这些文件有关信息的指针。(3)字符特殊文件(Charocterspecialfile)用于系统中的某些类型的设备。(4)块特殊
20、文件(Blockspecialfile)用于系统中的磁盘设备。Unix文件类型(5)管道文件(FIFO)这种文件用于进程间的通信,有时也将其称为命名管道。(6)套接字文件(socket)这种文件用于进程间的网络通信。套接口也可用于在一台宿主机上的进程之间的非网络通信。(7)符号连接文件(Symboliclink)这种文件指向另一个文件。 1.4.2文件相关命令1.ls 文件列表文件列表2.cat 显示文件显示文件 3.pr 格式化文件格式化文件4.cp 拷贝文件拷贝文件5.mv 移动文件移动文件6.rm 删除文件删除文件7.wc 计算文件字数计算文件字数8.grep 查找字符串查找字符串9.s
21、ort 文件排序文件排序10.tail 显示文件末尾显示文件末尾11.cmp 比较文件比较文件12.diff 显示文件差异显示文件差异 ls列表命令$ls-ltolal2rwrr1youyou19Sep3114:10junkrwrr1youyou22Sep3114:30test$ls列表命令格式:ls ls 选项 目录或文件 常用选项: -a -a 显示指定目录下所有的子目录与文件,包括隐藏文件; -c -c 按文件的修改时间排序; -l -l 用长格式来显示文件的详细信息,每个文件一行信息。文件长格式列表$ ls -l类型类型与权限与权限链接数链接数 文件主文件主 文件组文件组 大小大小 修
22、改时间修改时间 文件名文件名 $ls-lls-ltolal2tolal2rwrwrr1youyou19Sep3114:10junkrr1youyou19Sep3114:10junkrwrwrr1youyou22Sep3114:30bookrr1youyou22Sep3114:30book$ $文件类型与存取权限由10个字符,分2部分、4个字段:rwrwr第一部分:第1个字符表示文件类型。第二部分:第2-10个字符表示存取权限。文件类型第一部分:文件类型由第1个字符(第1个字段)表示。rwrwr-普通文件d目录文件b块设备文件c字符设备文件存取权限第二部分:存取权限由第2-10个字符(后三个字段
23、)表示。rwrr分为三组:(2-4字符):文件主权限(5-7字符):同组用户权限(8-10字符):其它用户权限4种权限种权限: 禁止禁止r 读读w 写写x 行行文件类型与存取权限举例: - rwx r-x r- 文件类型:- -表示普通文件。第1 1组:rwxrwx表示文件主可读、可写、可执行第2 2组:r-xr-x表示同组用户可读、不可写、可执行第3 3组:r-r-表示其它用户可读、不可写、不可执行$cat文件名$cat文件名1文件名2 $文件内容文件内容文件文件1 内容内容文件文件2 内容内容cat显示文件命令$pr文件名$pr文件名1文件名2$文件内容文件内容文件文件1 内容内容文件文件
24、2 内容内容pr格式显示文件命令$cp 选项 源文件或目录 目标文件或目录 选项: -a 该选项常在复制目录时使用,它保留链接、文件属性,并递归地复制目录。 -f 如果目标文件或目录已存在,就覆盖它,并且不做提示。 -i 与f选项正好相反,它在覆盖时,会让用户回答“Y”来确认 -p 使用该选项,复制文件时将保留修改时间和存取权限。 -r 若给出的源是一个目录,那么cp将递归复制该目录下所有的子目录和文件,不过这要求目标也是一个目录名。cp拷贝文件命令举例: :如果源是文件名,目标是目录名的话,那么使用cpcp命令可以指定多个源文件名。$cpa.txtb.txt/usr/home/user01
25、该命令将把a.txta.txt和b.txtb.txt文件复制到/usr/home/usr01/usr/home/usr01目录中。 cp拷贝文件命令$mv 选项 源文件或目录 目标文件或目录 选项: -f 如果操作要覆盖某已有的目标文件时不给任何提示。 -i 交互式的操作,如果操作要覆盖某已有的目标文件时会询问用户是否覆盖。mv文件移动(换名)命令参数类型与mv命令的执行效果:第一参数第一参数(源)(源) 第二个参数第二个参数(目标)(目标) 结果结果 文件名文件名 文件名文件名 将源文件名改为目标文件名将源文件名改为目标文件名 文件名文件名 目录名目录名 将文件移动到目标目录将文件移动到目标
26、目录 目录名目录名 目录名(存在)目录名(存在) 源目录移动到目标目录源目录移动到目标目录 目录名目录名 目录名(不存在)目录名(不存在) 源目录换名源目录换名 目录名目录名文件名文件名出错出错mv文件移动(换名)命令$rm 选项 文件名或目录名 选项: -f 在删除过程中不给任何指示,直接删除。 -r 指示rm将参数中列出的全部目录和子目录都递归地删除。 -i 交互式的删除,每个文件在删除时都给出提示。 rm删除文件命令$wc-lwc文件名-l-l 计算文件行数-w-w 计算文件字数-c-c 计算文件字符数举例:$wcpoem846263poem$wc计算文件的行/字/字符数grep是最为常
27、用字符查询命令,可用固定字符串来查询,也可用正则表达式来查询。格式:$grep选项字符串或正则表达式文件列表grep模式查找命令举例:$grep字符串文件名查找带该字符串的行$grepv字符串文件名查找不带该字符串的行$greproot/etc/passwd查找带root的行grep模式查找命令$sort文件名按ASCII字符排序$sortr 文件名按ASCII字符反向排序$sortn文件名按数字排序$sortnr文件名 按数字反向排序$sortf 文件名大小写字符混合排序$sort+n文件名 从第n+1个字段开始排序sort排序命令举例:$ls-s|sort-n$ls-s|sort-nr$l
28、s-l|sort+4nr注:“|”代表管道sort排序命令$tail文件名显示最后10行$tail2文件名显示最后2行$tail3文件名从第3行开始显示tail显示文件末尾$cmppoemnew-poempoemnew-poemdiffer:char58,line2$(11)cmp比较文件命令$diffpoemnew-poem2c2upontheirbackstobitethem,第2个文件内容4c4andsoonadinfinitum$(12)diff显示文件差异命令1.5目录和常用命令v基本概念v目录相关命令1.5.1基本概念主目录:Unix系统在专门存放用户文件的目录(/usr/home
29、或/home)下为每个用户分配一个主目录,又叫注册目录。该用户的所有文件均存放于该目录下。当前目录:shell目前所在的目录,用.表示。父目录:当前目录的上一级目录,用.表示。全路径名:从主根开始到当前目录的路径表示,例如/usr/home/you/doc/chap1.5.2目录相关命令 pwd显示当前目录名显示当前目录名 cd改变目录改变目录 mkdir 建立新目录建立新目录 rmdir 删除空目录删除空目录pwd 显示当前目录名login: youpassword: *You have mail$ pwd/usr/home/you$cd 改变目录命令$ cd /usr/home/mary
30、进入指定目录进入指定目录$ pwd/usr/home/mary$ cd 回到注册目录回到注册目录$ pwd/usr/home/you$ cd. 返回上一级目录返回上一级目录$ pwd/usr/home$mkdir 建立目录命令$ pwd/usr/home/you $ mkdir book$ cd book$ pwd /usr/home/you/book$rmdir删除目录命令$ pwd /usr/home/you/book$ cd.$ pwd /usr/home/you$ ls junk book$ rmdir book$ ls junk$要求1.安装Linux系统2.学会Unix系统基本使用本讲到此结束!