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

下载本文档

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

文档简介

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

2、命令及执行过程。n了解了解shell的作用及主要分类。的作用及主要分类。n掌握掌握shell脚本程序运行原理及基础语法,学会编脚本程序运行原理及基础语法,学会编写简单的写简单的shell脚本程序。脚本程序。提纲提纲实验内容实验内容n一、一、Linux命令实验命令实验 实验:熟悉实验:熟悉linux系统与系统与linux命令命令n二、文本编辑工具、二、文本编辑工具、GCC以及以及GDB的使用的使用 实验:熟悉工具的使用实验:熟悉工具的使用n三、三、Shell编程(小组实验)编程(小组实验) 实验:实验:shell脚本程序设计脚本程序设计一、一、Linux简介与常用命令简介与常用命令Linux发展

3、史发展史UNIX操作系统是美国贝尔实验室的操作系统是美国贝尔实验室的Ken.Thompson和和DennisRitchie于于1969年夏在年夏在DECPDP-7小型计算机上开发的一个分时操作系小型计算机上开发的一个分时操作系统。当时统。当时KenThompson为了能在闲置不用的为了能在闲置不用的PDP-7计算机上运行他非常喜欢的星际旅行(计算机上运行他非常喜欢的星际旅行(Spacetravel)游戏,在)游戏,在1969年夏天乘他夫人回年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了家乡加利福尼亚渡假期间,在一个月内开发出了unix操作系统的原型。当时使用的是操作系统的原型。当时

4、使用的是BCPL语言(语言(基本组合编程语言),后经基本组合编程语言),后经DennisRitchie于于1972年用移植性很强的年用移植性很强的C语言进行了改写,使得语言进行了改写,使得UNIX系统在大专院校得到了推广。系统在大专院校得到了推广。UNIX操作系统的诞生操作系统的诞生Linux发展史发展史MINIX系统是由系统是由AndrewS.Tanenbaum(AST)开发的。)开发的。AST是在荷兰是在荷兰Amsterdam的的Vrije大学数学与计算机科学大学数学与计算机科学系统工作,是系统工作,是ACM和和IEEE的资深会员。的资深会员。AST虽出生在美虽出生在美国纽约,但是是荷兰侨

5、民。由于读博士后的缘故,他来到了国纽约,但是是荷兰侨民。由于读博士后的缘故,他来到了家乡荷兰。从此就与家乡一直有来往。后来就在家乡荷兰。从此就与家乡一直有来往。后来就在Vrije大学大学开始教书、带研究生了。荷兰首都开始教书、带研究生了。荷兰首都Amsterdam是个常年阴是个常年阴雨绵绵的城市,而对于雨绵绵的城市,而对于AST来说,这最好不过了,因为这来说,这最好不过了,因为这样他就可以待在家里摆弄他的计算机了。样他就可以待在家里摆弄他的计算机了。MINIX是他是他1987年编制的,主要用于学生学习操作系统原理。到年编制的,主要用于学生学习操作系统原理。到91年时版本年时版本是是1.5。当时

6、该操作系统在大学使用是免费的,但其它用途。当时该操作系统在大学使用是免费的,但其它用途不是。不是。由于由于MINIX系统的出现并且提供源代码系统的出现并且提供源代码(只能免费用于大学只能免费用于大学内内)在全世界的大学中刮起了学习在全世界的大学中刮起了学习UNIX系统旋风。系统旋风。MINIX操作系统的诞生操作系统的诞生Linux发展史发展史GNU计划和自由软件基金会计划和自由软件基金会(theFreeSoftwareFoundation-FSF)是由是由RichardM.Stallman于于1984年一手创办的。旨在开发一个类似年一手创办的。旨在开发一个类似Unix、并且是自由软件的完整操作

7、系统:并且是自由软件的完整操作系统:GNU系统。系统。(GNU是是GNUsNotUnix的递归缩写,它的发音为的递归缩写,它的发音为guh-NEW。)各。)各种使用种使用linux作为核心的作为核心的GNU操作系统正在被广泛的使用。虽然这些系统操作系统正在被广泛的使用。虽然这些系统通常被称作通常被称作Linux,但是严格地说,它们应该被称为,但是严格地说,它们应该被称为GNU/Linux系统。系统。到上世纪到上世纪90年代初,年代初,GNU项目已经开发出许多高质量的免费软件,其项目已经开发出许多高质量的免费软件,其中包括有名的中包括有名的emacs编辑系统、编辑系统、bashshell程序、程

8、序、gcc系列编译程序、系列编译程序、gdb调试程序等等。这些软件为调试程序等等。这些软件为Linux操作系统的开发创造了一个合适的操作系统的开发创造了一个合适的环境,是环境,是Linux能够诞生的基础之一。以至于目前许多人都将能够诞生的基础之一。以至于目前许多人都将Linux操作操作系统称为系统称为GNU/Linux操作系统。操作系统。Linux只是操作系统的一个内核,没有只是操作系统的一个内核,没有GNU软件环境软件环境(比如说比如说bashshell),则,则Linux将寸步难行。将寸步难行。GNU计划计划Linux发展史发展史POSIX(PortableOperatingSystemI

9、nterfaceforComputingSystems)是由是由IEEE和和ISO/IEC开发的一簇标准。该标准是基于现有的开发的一簇标准。该标准是基于现有的UNIX实践和实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。它是在源代码一级上在多种操作系统上移植运行。它是在1980年早期一个年早期一个UNIX用户组用户组(usr/group)的早期工作的基础上取得的。该的早期工作的基础上取得的。该UNIX用户组原来试图用户组原来试图将将AT&T的系统的系统V和和Berkele

10、yCSRG的的BSD系统的调用接口之间的区别系统的调用接口之间的区别重新调和集成,从而于重新调和集成,从而于1984年产生了年产生了/usr/group标准。标准。1985年,年,IEEE操作系统技术委员会标准小组委员会(操作系统技术委员会标准小组委员会(TCOS-SS)开始在)开始在ANSI的支持下的支持下责成责成IEEE标准委员会制定有关程序源代码可移植性操作系统服务接口正标准委员会制定有关程序源代码可移植性操作系统服务接口正式标准。到了式标准。到了1986年年4月,月,IEEE就制定出了试用标准。第一个正式标准就制定出了试用标准。第一个正式标准是在是在1988年年9月份批准的(月份批准的

11、(IEEE1003.1-1988),也既以后经常提到的),也既以后经常提到的POSIX.1标准。标准。该标准在推动该标准在推动Linux操作系统以后朝着正规路上发展起着重要的作用。操作系统以后朝着正规路上发展起着重要的作用。是是Linux前进和灯塔。前进和灯塔。POSIX 标准标准Linux发展史发展史19911991年,芬兰大学生年,芬兰大学生Linus TorvaldsLinus Torvalds想要了解想要了解IntelIntel的的新新CPUCPU8038680386。他认为好的学习方法是自己编写。他认为好的学习方法是自己编写操作系统内核。出于这种目的,加上他对当时操作系统内核。出于这

12、种目的,加上他对当时UnixUnix变种版本对于变种版本对于8038680386类机器的脆弱支持十分不满,他类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持决定要开发出一个全功能的、支持POSIXPOSIX标准的、类标准的、类UnixUnix的操作系统内核,该系统吸收了的操作系统内核,该系统吸收了BSDBSD和和System System V V的优点,同时摒弃了它们的缺点。的优点,同时摒弃了它们的缺点。LinusTorvaldsLinusTorvalds独立把这个内核开发到独立把这个内核开发到0.020.02版,这个版本已经可以版,这个版本已经可以运行运行gccgcc,bashba

13、sh和很少的一些应用程序。这些就是和很少的一些应用程序。这些就是他开始的全部工作了。接着开始在因特网络上寻求他开始的全部工作了。接着开始在因特网络上寻求广泛的帮助,年,广泛的帮助,年,LinusLinus的的LinuxLinux已经升级已经升级到到1.01.0版本。它的源代码量也呈指数形式增长,实现版本。它的源代码量也呈指数形式增长,实现了基本的了基本的TCP/IPTCP/IP功能。此时功能。此时LinuxLinux就已经拥有大约就已经拥有大约1010万用户了。万用户了。Linus TorvaldsLinus Torvalds要求内核代码必须公开,要求内核代码必须公开,任何人不得从中获利,这种

14、纯粹的自由软件理想妨任何人不得从中获利,这种纯粹的自由软件理想妨碍了碍了linuxlinux的扩散和发展。的扩散和发展。Linux操作系统的诞生操作系统的诞生自由而自由奔放的黑马诞生于学生之手成长于Internet 壮大于自由而开放的文化Linux发展史发展史Linux简介简介nLinux是一套可以免费使用和自由传播的类是一套可以免费使用和自由传播的类Unix操作系统,基于操作系统,基于Unix内核。内核。nLinux具有多种发行版本具有多种发行版本l厂家将Linux内核与外围实用程序和文档包装, 提供安装界面和管理工具等。注意的几点注意的几点n图形界面只是图形界面只是Linux上的一个软件,

15、不是内核上的一个软件,不是内核,终端打开的是终端打开的是字符界面。字符界面。n$为普通用户,为普通用户,#为超级用户,密码输入时不回显为超级用户,密码输入时不回显n没有没有C:D:,只有目录,用斜线:,只有目录,用斜线“/”分隔分隔n是否为可执行文件不看扩展名,看文件有无是否为可执行文件不看扩展名,看文件有无x(执行执行)属性属性n区分大小写,区分大小写,abc.txt和和ABC.txt不同不同n想把文件或目录隐藏起来,第一个字用想把文件或目录隐藏起来,第一个字用“.”Linux目录树目录树Linux目录树目录树Linux中的用户中的用户n超级用户(超级用户(root)l登录后,默认用户主目录

16、为 /rootl至高无上,具有一切权限。输入命令时候为#n普通用户普通用户l新创建的普通用户,系统会为其在/home目录下以该用户名创建一个新目录,该目录即默认用户主目录 例如: /home/lyml输入命令时候显示为$指令的一般格式指令的一般格式n命令名称命令名称选择项选择项参数参数l选择项选择项:用来扩展命令的特性或功能。l$ls -ll参数参数:表示命令的作用对象,如文件名。l$ls l /home/lym切换目录切换目录-cdn名称:名称:change directoryn功能:功能:切换目录n语法:语法:cd 目录l$ cd / 切换到根目录l$ cd . 切换到上一级目录l$ cd

17、 切换到用户主目录l. 当前目录l. 上一级目录l 当前登录用户的主目录lroot登录,默认/root/ 普通用户,默认/home/lym列出文件清单列出文件清单-lsn名称:名称:listn功能:功能:显示目录文件n语法:语法:ls 选项-al 文件/目录l-a 显示所有文件名,包括隐藏文件l-l 详细信息n范例:范例:帮助命令帮助命令-mann名称名称manualpagen功能:显示系统中命令与函数的帮助信息功能:显示系统中命令与函数的帮助信息n语法:语法:man命令命令n范例:范例:l$man ls创建新文件创建新文件-touchn名称:名称:touchn功能:功能:创建新文件n语法:语

18、法:touch 文件n范例:范例:l$touch newfilel若newfile并不存在,则新建文件;若存在,则修改最后修改时间创建新目录创建新目录-mkdirn名称:名称:make directoryn功能:功能:创建新目录n语法:语法:mkdir -p 目录l-p 递归创建n范例:范例:l$mkdir /dirl$mkdir -p /dir1/dir2/dir3文件处理命令文件处理命令-catn名称:名称:concatenateanddisplayfilesn功能:显示文件内容功能:显示文件内容n语法:语法:cat文件名文件名n范例:范例:l$catfile1查看file1内容文件的复制

19、文件的复制-cpn名称:名称:copyn功能:功能:复制n语法:语法:cp -r 源文件/目录 目的目录l-r复制目录n范例:范例:l$cpfiledir将file复制到dir1l$cpfile1file2dir1将file1与file2复制到dir1l$cprdir1dir2 将dir1所有文件及其子文件复制到dir2文件的移动与更名文件的移动与更名-mvn名称:名称:moven功能:移动、更名功能:移动、更名n语法语法:mv 源文件/目录 目的目录n范例:范例:l$mvfile1file2当前目录下file1改名为file2l$mvfile2/test将file2移动到/test文件的删除

20、文件的删除-rmn名称:名称:removen功能:删除功能:删除n语法:语法:rmrfi文件文件/目录目录l-r 删除目录l-f 强制删除/-i 删除前询问n范例:范例:l$rmffile1删除当前录下file1文件l$rmrftest强制删除目录test文件搜索命令文件搜索命令-findn名称:名称:findn功能:文件搜索功能:文件搜索n语法:语法:find搜索范围搜索范围匹配条件匹配条件n范例:范例:l$find/home/lymnametest在主目录下查找名为test的文件l$find/-size+10000k根目录下找find大于10M的文件文件搜索命令文件搜索命令-grepn名称

21、:名称:grepn功能:功能:文件中搜索指定行,输出n语法:语法:grep -anv指定字串文件l-a 以文本方式搜索l-n 输出行号l-v 反向搜索,找没有搜索字符串的行n范例:范例:l$grep mysql /root/install.logl$grep mysql * 在当前所有文件中查找统计命令统计命令-wcn名称:名称:wordcountn功能:统计行数、字数、字节数功能:统计行数、字数、字节数n语法:语法:wc-clw文件文件l-l 统计行数l-w 统计字数l-c 统计字节数n范例:范例:l$wc -l /root/install.log文件搜索命令文件搜索命令-sortn名称:名

22、称:sortn功能:文本按行排序功能:文本按行排序n语法:语法:sort指定字串指定字串文件文件l-u 去除重复行l-r 改为降序,默认为升序l-o 重定向写入文件,默认为标准输出n范例:范例:l$sortrfile1将file1降序后标准输出,原文件不变l$sortrfile1ofile1将file 1降序后输出到原文件中输出重定向输出重定向n保存到文件保存到文件n追加到文件追加到文件llsl/etcfile将ls命令生成的/etc目录下文件清单存到file文件中llsl/etcdir将ls命令生成的/etc目录下文件清单追加到file文件中 管道管道n格式:命令格式:命令1|命令命令2|命

23、令命令nl将前一条命令的执行结果通过标准输出送给后一命令作为输入数据l每条命令作为单独的进程运行lcat/etc/passwd|grep/bin/bash|wcl将cat显示的passw文件内容输出给grep;grep找出含有“bin/bash”的所有行;wc统计行数”;Linux文件类型文件类型n普通文件:普通文件:“-”n目录文件目录文件:“d”,类似windows的文件夹n设备文件:设备文件:所有设备均为文件,如打印机。块文件“b”,字符文件“c”n链接文件:链接文件:“l”硬链接与符号链接硬链接与符号链接n硬链接硬链接l不创建新文件,只是新添文件名,二者的文件类型、大小完全一样llin

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

25、hmod+xfile为file增加所有的x权限lChmod u-w file file文件减少w权限文件处理命令文件处理命令-pwdn名称:名称:print working directoryn功能:功能:显示当前工作目录n语法:语法:pwdl直接回车关机命令关机命令-shutdownn功能:关机功能:关机n语法:语法:shutdown-hr时间时间l-h 关机l-r 重启l需要root权限,sudo暂时提升权限n范例:范例:l$sudo shutdown h now 马上关机l$sudo shutdown r 10 十分钟后重启 二、二、文本编辑工具、文本编辑工具、GCC以及以及GDB的使用

26、的使用Linux下下c编程编程n运行运行c文件,文件,hello.c为例为例n(1)预处理阶段: gcc -E hello.c -o hello.i -E的作用是让Gcc在预处理结束后停止编译过程 Hello.i预处理过生的c语言代码(2)编译阶段(检查代码的规范性、是否有语法错误) gcc -S hello.i -o hello.s -S的作用只进行编译而不进行汇编 Hello.s汇编语言代码Linux下下c编程编程n(3)汇编阶段:(把编译阶段生成的.s文件转成目标文件) Gcc -c hello.s -o hello.o -c作用查看汇编代码已转化为.o的二进制代码 (4)链接阶段: G

27、cc hello.o -o hello(生成可执行文件) 运行该可执行文件 ./helloLinux下下c编程编程VI编辑器的使用编辑器的使用gedit编辑器的使用编辑器的使用三、三、shell编程编程Shell简介简介nshell是用户和内核之间的接口。为屏蔽内核复杂性,在内核周是用户和内核之间的接口。为屏蔽内核复杂性,在内核周围建一个外壳(围建一个外壳(shell),用户向),用户向shell提出请求,提出请求,shell逐条解逐条解释将请求传给内核。释将请求传给内核。nShell是一种命令解释器,是一种高级编程语言,支持变量、函是一种命令解释器,是一种高级编程语言,支持变量、函数、控制语

28、句等等。解释执行方式,不会形成目标程序。数、控制语句等等。解释执行方式,不会形成目标程序。nShell有多种,一般使用有多种,一般使用bash(bonurneshell),用),用echo$SHELL查看环境所用查看环境所用shell为什么要有为什么要有shell脚本脚本n系统管理员每天需要进行大量且重复的管理工作系统管理员每天需要进行大量且重复的管理工作,如文件路径备份、更新等,如文件路径备份、更新等。可以将重复进行的可以将重复进行的操作写入一个文本文件,作为操作写入一个文本文件,作为shell脚本运行。脚本运行。l如,管理员每天需要运行如下命令:datepwdl又如groupadd gro

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

30、脚本,作为可执行程序运行,需x权限l.脚本名脚本名:. 是一个命令,不开启儿子shell,当前shell运行Shell脚本示例脚本示例#!/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查看用户Shell脚本示例脚本示例nShell是一种命令解释器,也是一种比较复杂是一种命令解释器,也是一种比较复杂的高级编程语言,它支持

31、变量、函数、控制的高级编程语言,它支持变量、函数、控制语句等等。语句等等。#!/bin/sh #This is s2#print “hello shell!”echo “hello shell!”chmod u+x s2./s2Shell的变量的变量nBaBaShellShell的变量的变量l变量赋值:var=string a=“hello world”l不需要声明类型,都是字符串类型,直接赋值使用l字符串类型,等号后无空格,若string有空格,需要引号l取用变量时则在变量名称前加“$”l用户自定义变量为小写,系统变量为大写l变量都为字符串,数值运算需要外部命令(如expr)nexpr:一般

32、用于整数值计算,常用于程序计数器lexpr 10 + 10lexpr 10 * 10lexpr 30 / 10常用变量常用变量n系统变量系统变量env命令查看所有环境变量命令查看所有环境变量l$HOME 用户主目录,l$PATH 执行命令时所搜寻的目录n特殊变量特殊变量l$0这个程序的执行名字 $n这个程序的第n个参数值$*这个程序的所有参数 $#这个程序的参数个数 $这个进程的PID $?执行上一个指令的返回值条件测试条件测试n测试文件状态测试文件状态-d:目录-s:文件非空-f:正规文件-w:可写-L:符号链接-u:文件有suid位-r:可读-x:可执行n表达式表达式-eq =-ne !=-gt -lt -n 非空串-z 空串-le =n逻辑操作逻辑操作-a &-o |!控制语句控制语句nif语句语句lif 条件测试lthen actionlelif 条件l then actionlelse actionlfi#!/bin/sh scores=40;if $scores -gt 90 then

温馨提示

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

评论

0/150

提交评论