第7章 Linux编程基础实验.pptx_第1页
第7章 Linux编程基础实验.pptx_第2页
第7章 Linux编程基础实验.pptx_第3页
第7章 Linux编程基础实验.pptx_第4页
第7章 Linux编程基础实验.pptx_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章相关说明说明:(1)实验相关ppt内容选自操作系统课程设计的核心实验,本实验为linux编程基础实验,以学生理解linux的发展史和熟悉linux命令及相应的工具为主。(2)本实验难点在于linux命令使用,对于初接触linux操作系统的学生,重在亲自动手操作,讲解时尽量降低讲解速度,shell脚本要反复多加练习才能掌握语法等。(3)该课程上课时间为2015年春季,全班人数共54人。第7章:Linux编程基础实验提纲3提纲4实验目的了解Linux编程环境和编程工具。掌握基本的Linux系统命令及执行过程。了解shell的作用及主要分类。掌握shell脚本程序运行原理及基础语法,学会编写简

2、单的shell脚本程序。5提纲6实验内容一、Linux命令实验 实验:熟悉linux系统与linux命令二、文本编辑工具、GCC以及GDB的使用 实验:熟悉工具的使用三、Shell编程(小组实验) 实验:shell脚本程序设计7一、Linux简介与常用命令8Linux发展史UNIX操作系统是美国贝尔实验室的Ken.Thompson和DennisRitchie于1969年夏在DECPDP-7小型计算机上开发的一个分时操作系统。当时KenThompson为了能在闲置不用的PDP-7计算机上运行他非常喜欢的星际旅行(Spacetravel)游戏,在1969年夏天乘他夫人回家乡加利福尼亚渡假期间,在一

3、个月内开发出了unix操作系统的原型。当时使用的是BCPL语言(基本组合编程语言),后经DennisRitchie于1972年用移植性很强的C语言进行了改写,使得UNIX系统在大专院校得到了推广。UNIX操作系统的诞生9Linux发展史MINIX 系统是由Andrew S. Tanenbaum(AST)开发的。AST 是在荷兰Amsterdam 的Vrije 大学数学与计算机科学系统工作,是ACM 和IEEE 的资深会员。AST 虽出生在美国纽约,但是是荷兰侨民。由于读博士后的缘故,他来到了家乡荷兰。从此就与家乡一直有来往。后来就在Vrije 大学开始教书、带研究生了。荷兰首都Amsterda

4、m 是个常年阴雨绵绵的城市,而对于AST 来说,这最好不过了,因为这样他就可以待在家里摆弄他的计算机了。MINIX 是他1987年编制的,主要用于学生学习操作系统原理。到91年时版本是1.5。当时该操作系统在大学使用是免费的,但其它用途不是。 由于MINIX系统的出现并且提供源代码(只能免费用于大学内)在全世界的大学中刮起了学习UNIX系统旋风。MINIX操作系统的诞生10Linux发展史GNU计划和自由软件基金会(theFreeSoftwareFoundation-FSF)是由RichardM.Stallman于1984年一手创办的。旨在开发一个类似Unix、并且是自由软件的完整操作系统:G

5、NU系统。(GNU是GNUsNotUnix的递归缩写,它的发音为guh-NEW。)各种使用linux作为核心的GNU操作系统正在被广泛的使用。虽然这些系统通常被称作Linux,但是严格地说,它们应该被称为GNU/Linux系统。到上世纪90年代初,GNU项目已经开发出许多高质量的免费软件,其中包括有名的emacs编辑系统、bashshell程序、gcc系列编译程序、gdb调试程序等等。这些软件为Linux操作系统的开发创造了一个合适的环境,是Linux能够诞生的基础之一。以至于目前许多人都将Linux操作系统称为GNU/Linux操作系统。 Linux只是操作系统的一个内核,没有GNU软件环境

6、(比如说bashshell),则Linux将寸步难行。GNU计划11Linux发展史POSIX(PortableOperatingSystemInterfaceforComputingSystems)是由IEEE和ISO/IEC开发的一簇标准。该标准是基于现有的UNIX实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。它是在1980年早期一个UNIX用户组(usr/group)的早期工作的基础上取得的。该UNIX用户组原来试图将AT&T的系统V和BerkeleyCSRG的BSD系统的调用接口之间的区别重新调和集成,从而于1984年产生了

7、/usr/group标准。1985年,IEEE操作系统技术委员会标准小组委员会(TCOS-SS)开始在ANSI的支持下责成IEEE标准委员会制定有关程序源代码可移植性操作系统服务接口正式标准。到了1986年4月,IEEE就制定出了试用标准。第一个正式标准是在1988年9月份批准的(IEEE1003.1-1988),也既以后经常提到的POSIX.1标准。 该标准在推动Linux操作系统以后朝着正规路上发展起着重要的作用。是Linux前进和灯塔。POSIX 标准12Linux发展史1991年,芬兰大学生Linus Torvalds想要了解Intel的新CPU80386。他认为好的学习方法是自己编写

8、操作系统内核。出于这种目的,加上他对当时Unix变种版本对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V的优点,同时摒弃了它们的缺点。LinusTorvalds独立把这个内核开发到0.02版,这个版本已经可以运行gcc,bash和很少的一些应用程序。这些就是他开始的全部工作了。接着开始在因特网络上寻求广泛的帮助,年,Linus的Linux已经升级到1.0版本。它的源代码量也呈指数形式增长,实现了基本的TCP/IP功能。此时Linux就已经拥有大约10万用户了。Linus Torvalds要求

9、内核代码必须公开,任何人不得从中获利,这种纯粹的自由软件理想妨碍了linux的扩散和发展。Linux操作系统的诞生13自由而自由奔放的黑马诞生于学生之手成长于Internet 壮大于自由而开放的文化Linux发展史14Linux简介Linux是一套可以免费使用和自由传播的类Unix操作系统,基于Unix内核。Linux具有多种发行版本厂家将Linux内核与外围实用程序和文档包装, 提供安装界面和管理工具等。15注意的几点图形界面只是Linux上的一个软件,不是内核,终端打开的是字符界面。$为普通用户,#为超级用户,密码输入时不回显没有C:D:,只有目录,用斜线“/”分隔是否为可执行文件不看扩展

10、名,看文件有无x(执行)属性区分大小写,abc.txt和ABC.txt不同想把文件或目录隐藏起来,第一个字用“.”16Linux目录树17Linux目录树18Linux中的用户超级用户(root)登录后,默认用户主目录为 /root至高无上,具有一切权限。输入命令时候为#普通用户新创建的普通用户,系统会为其在/home目录下以该用户名创建一个新目录,该目录即默认用户主目录 例如: /home/lym输入命令时候显示为$19指令的一般格式命令名称 选择项 参数选择项:用来扩展命令的特性或功能。$ls -l参数:表示命令的作用对象,如文件名。$ls l /home/lym20切换目录-cd名称:c

11、hange directory功能:切换目录语法:cd 目录$ cd / 切换到根目录$ cd . 切换到上一级目录$ cd 切换到用户主目录. 当前目录. 上一级目录 当前登录用户的主目录root登录,默认/root/ 普通用户,默认/home/lym21列出文件清单-ls名称:list功能:显示目录文件语法:ls 选项-al 文件/目录-a 显示所有文件名,包括隐藏文件-l 详细信息范例:22帮助命令-man名称manual page功能:显示系统中命令与函数的帮助信息语法:man 命令范例:$man ls23创建新文件-touch名称:touch功能:创建新文件语法:touch 文件范例

12、:$touch newfile若newfile并不存在,则新建文件;若存在,则修改最后修改时间24创建新目录-mkdir名称:make directory功能:创建新目录语法:mkdir -p 目录-p 递归创建范例:$mkdir /dir$mkdir -p /dir1/dir2/dir325文件处理命令-cat名称:concatenate and display files功能:显示文件内容语法:cat 文件名范例:$cat file1 查看file1内容26文件的复制-cp名称:copy功能:复制语法:cp -r 源文件/目录 目的目录-r 复制目录范例:$cp file dir 将fil

13、e复制到dir1$cp file1 file2 dir1 将file1与file2复制到dir1$cp r dir1 dir2 将dir1所有文件及其子文件复制到dir227文件的移动与更名-mv名称:move功能:移动、更名语法:mv 源文件/目录 目的目录范例:$mv file1 file2 当前目录下file1改名为file2$mv file2 /test 将file2移动到/test28文件的删除-rm名称:remove功能:删除语法:rm rfi 文件/目录-r 删除目录-f 强制删除/-i 删除前询问范例:$rm f file1 删除当前录下file1文件$rm rf test 强

14、制删除目录test29文件搜索命令-find名称:find功能:文件搜索语法:find 搜索范围匹配条件范例:$find /home/lym name test 在主目录下查找名为test的文件$find / -size +10000k 根目录下找find大于10M的文件30文件搜索命令-grep名称:grep功能:文件中搜索指定行,输出语法:grep -anv指定字串文件-a 以文本方式搜索-n 输出行号-v 反向搜索,找没有搜索字符串的行范例:$grep mysql /root/install.log$grep mysql * 在当前所有文件中查找31统计命令-wc名称:word coun

15、t功能:统计行数、字数、字节数语法:wc -clw文件-l 统计行数-w 统计字数-c 统计字节数范例:$wc-l/root/install.log32文件搜索命令-sort名称:sort功能:文本按行排序语法:sort 指定字串文件-u 去除重复行-r 改为降序,默认为升序-o 重定向写入文件,默认为标准输出范例:$sort r file1 将file1降序后标准输出,原文件不变$sort r file1 o file1 将file 1降序后输出到原文件中33输出重定向 保存到文件 追加到文件ls l /etc file 将ls命令生成的/etc目录下文件清单存到file文件中ls l /e

16、tc dir 将ls命令生成的/etc目录下文件清单追加到file文件中 34管道格式:命令1|命令2|命令n将前一条命令的执行结果通过标准输出送给后一命令作为输入数据每条命令作为单独的进程运行cat /etc/passwd | grep /bin/bash | wc l将cat显示的passw文件内容输出给grep;grep找出含有“bin/bash”的所有行;wc统计行数”; 35Linux文件类型普通文件:“-”目录文件:“d”,类似windows的文件夹设备文件:所有设备均为文件,如打印机。块文件“b”,字符文件“c”链接文件:“l”36硬链接与符号链接硬链接不创建新文件,只是新添文件

17、名,二者的文件类型、大小完全一样link count记录文件具有的硬链接数,每新添一个硬链接加1,减为0时数据块才被真正清除符号链接(软链接)类似于windows下的快捷方式,会新建一个文件,数据指向目标文件的数据块,该文件类型为链接文件,“l”不影响link count数37ln(link)命令ln(link) 功能:创建链接语法:ln -s 源文件 目标文件硬链接符号链接38权限管理命令-chmod名称:chmod(change permission mode)功能:改变权限语法:chmod ugo +-= rwx文件/目录范例:Chmod +x file 为file增加所有的x权限Chm

18、od u-w file file文件减少w权限39文件处理命令-pwd名称:print working directory功能:显示当前工作目录语法:pwd直接回车40关机命令-shutdown功能:关机语法:shutdown -hr 时间-h 关机-r 重启需要root权限,sudo暂时提升权限范例:$sudo shutdown h now 马上关机$sudo shutdown r 10 十分钟后重启41二、文本编辑工具、GCC以及GDB的使用42Linux下c编程运行c文件,hello.c为例(1)预处理阶段: gcc -E hello.c -o hello.i -E的作用是让Gcc在预处

19、理结束后停止编译过程 Hello.i预处理过生的c语言代码(2)编译阶段(检查代码的规范性、是否有语法错误) gcc -S hello.i -o hello.s -S的作用只进行编译而不进行汇编 Hello.s汇编语言代码43Linux下c编程(3)汇编阶段:(把编译阶段生成的.s文件转成目标文件) Gcc -c hello.s -o hello.o -c作用查看汇编代码已转化为.o的二进制代码 (4)链接阶段: Gcc hello.o -o hello(生成可执行文件) 运行该可执行文件 ./hello44Linux下c编程 VI编辑器的使用 gedit编辑器的使用45三、shell编程46

20、Shell简介shell是用户和内核之间的接口。为屏蔽内核复杂性,在内核周围建一个外壳(shell),用户向shell提出请求,shell逐条解释将请求传给内核。Shell是一种命令解释器,是一种高级编程语言,支持变量、函数、控制语句等等。解释执行方式,不会形成目标程序。Shell有多种,一般使用bash(bonurne shell),用echo $SHELL查看环境所用shell47为什么要有shell脚本系统管理员每天需要进行大量且重复的管理工作,如文件路径备份、更新等。可以将重复进行的操作写入一个文本文件,作为shell脚本运行。如,管理员每天需要运行如下命令:datepwd又如grou

21、padd groupnameusradd m username1 -g groupnameusradd m username2 g groupname -m默认方式,/home/username148Shell脚本运行过程编写shell脚本使用任意编辑器(gedit、vim、nano等)编写脚本第一行为#!/bin/sh,指示解释器(shell/perl)添加执行权限: chmod u+x test.sh运行脚本: ./test.sh运行脚本的几种方式sh 脚本名:sh 只执行bash,读文件,只需r权限;./脚本名 :当前目录下该脚本,作为可执行程序运行,需x权限. 脚本名:. 是一个命令,

22、不开启儿子shell,当前shell运行49Shell脚本示例#!/bin/sh #This is s1datepwdchmod u+x s1./s1#!/bin/sh #This is s2sudo groupadd g1sudo usradd m u1 g g1 sudo usradd m u2 -g g1chmod u+x s2./s2/etc/group查看组/etc/passwd查看用户50Shell脚本示例Shell是一种命令解释器,也是一种比较复杂的高级编程语言,它支持变量、函数、控制语句等等。#!/bin/sh #This is s2#print “hello shell!”e

23、cho “hello shell!”chmod u+x s2./s251Shell的变量BaShell的变量变量赋值:var=string a=“hello world”不需要声明类型,都是字符串类型,直接赋值使用字符串类型,等号后无空格,若string有空格,需要引号取用变量时则在变量名称前加“$”用户自定义变量为小写,系统变量为大写变量都为字符串,数值运算需要外部命令(如expr)expr:一般用于整数值计算,常用于程序计数器expr 10 + 10expr 10 * 10expr 30 / 1052常用变量系统变量 env命令查看所有环境变量$HOME 用户主目录,$PATH 执行命令时

24、所搜寻的目录特殊变量$0这个程序的执行名字 $n这个程序的第n个参数值$*这个程序的所有参数 $#这个程序的参数个数 $这个进程的PID $?执行上一个指令的返回值53条件测试测试文件状态-d:目录-s:文件非空-f:正规文件-w:可写-L:符号链接-u:文件有suid位-r:可读-x:可执行表达式-eq =-ne !=-gt -lt -n 非空串-z 空串-le =逻辑操作-a &-o |!54控制语句if 语句if 条件测试 then actionelif 条件 then actionelse actionfi#!/bin/sh scores=40;if $scores -gt 90 then echo very good!elif $scores -gt 80 then echo good!elif $score

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论