版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目七娴熟运用vi程序编辑器与shell项目导入:系统管理员的一项重要工作就是要修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的文字接口的文本编辑器。全部的Linux发行版本都内置有vi文本编辑器,很多软件也默认运用vi作为编辑的接口,因此读者确定要学会运用vi文本编辑器。vim是进阶版的vi,vim不但可以用不同颜色显示文本内容,还能够进行诸如shellscript、Cprogram等程序的编辑,因此,可以将vim视为一种程序编辑器。职业实力目标和要求:学会运用vi编辑器。了解shell的强大功能和shell的吩咐说明过程。学会运用重定向和管道。驾驭正则表达式的运用方法。项目七娴熟运用vi程序编辑器与shell1.娴熟运用vi编辑器2.娴熟驾驭shell3.娴熟娴熟驾驭正则表达式4.驾驭输入输出重定向与管道吩咐
7.超级链接5.项目实录:运用Vi编辑器
6.习题7.1任务1娴熟运用vi编辑器
1.
项目课题引入2.Vi编辑器的运用方法
3.Linux中C语言程序的编辑
4.Linux中C语言程序的运行
5.现场演示案例课题引入——项目背景
在Linux操作系统中设计一个C语言程序,当程序运行时显示如下的运行效果:课题引入——项目分析完成本项目须要解决的问题:1、在Linux下我们运用什么工具进行程序和文字的编辑。2、在Linux操作系统中我们如何编译和运行C程序3、我们编写的程序如何在Linux操作系统中进行调试。课题引入——教学目标学习本课须要实现的教学目标:驾驭Vi编辑器的启动和退出驾驭Vi编辑器的工作模式熟悉Vi编辑器的基本吩咐了解C/C++编译器gcc的运用(项目9具体讲解,可提前预习)驾驭Linux下程序设计的一般方法课题引入——应达到的职业实力学生学习本课后应当具有的职业实力:娴熟驾驭Vi编辑器的运用方法能够利用Vi编辑器进行文字编辑工作能够运用gcc进行C/C++程序的编译和调试能够独立完成基本的Linux程序项目问题一—Vi编辑器的运用Vi编辑器包含的主要内容有: Vi编辑器的启动与退出Vi编辑器的工作模式Vi编辑器的常用吩咐Vi编辑器的简介Vi是Visualinterface的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作用户可以依据自己的须要对Vi进行定制,这是其他编辑程序所没有的。Vi不是一个排版程序,它不像WORD或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。Vi是全屏幕文本编辑器,它没有菜单,只有吩咐。7.1.1子任务1Vi的启动与退出在系统提示符后输入Vi和想要编辑(或建立)的文件名,便可进入Vi
假如只输入Vi,而不带文件名,也可以进入Vi7.1.1Vi的启动与退出要退出Vi,在吩咐模式下键入如图所示吩咐。7.1.2子任务2娴熟驾驭vi的工作模式Vi有3种基本工作模式:编辑模式、插入模式和吩咐模式。进入Vi之后,首先进入的就是编辑模式,进入编辑模式后Vi等待编辑吩咐输入而不是文本输入,也就是说这时输入的字母都将作为编辑吩咐来说明。在编辑模式下输入插入吩咐i、附加吩咐a、打开吩咐o、修改吩咐c、替换吩咐s都可以进入插入模式。在插入模式下,用户输入的任何字符都被Vi当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中(插入模式下),若想回到吩咐模式下,按ESC键即可。在编辑模式下,用户按“:”键即可进入吩咐模式,此时Vi会在显示窗口的最终一行(通常也是屏幕的最终一行)显示一个“:”作为吩咐模式的提示符,等待用户输入吩咐。7.1.3子任务3运用vi吩咐在编辑模式下,输入如表所示的吩咐均可进入插入模式文件相关吩咐运用下表中的吩咐可以在Vi中进行文件相关的操作字符串搜寻、替换和删除运用下表中的吩咐可以进行字符串的相关操作文本的复制、删除和移动运用下表中的吩咐,可以进行文本的相关操作项目问题二—C程序的编译Linux应用程序表现为2种特殊类型的文件:可执行文件和脚本文件。可执行文件是计算机可以干脆运行的程序,相当于Windows的.exe文件。脚本文件是一组指令的集合,相当于Windows的.bat文件。在POSIX兼容的系统中,C语言编译器被称为c89.Linux尽量实现相关标准,c89,cc和gcc这些吩咐全都指向系统的C语言编译器,通常是GNUC编译器,或者称为gcc。gcc编译器在为Linux开发应用程序时,绝大多数状况下运用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何敏捷运用C编译器。GCC不仅功能特别强大,结构也异样敏捷。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等。开放、自由和敏捷是Linux的魅力所在,而这一点在GCC上的体现就是程序员通过它能够更好地限制整个编译过程。在运用GCC编译程序时,编译过程可以被细分为四个阶段: ◆预处理(Pre-Processing) ◆编译(Compiling) ◆汇编(Assembling) ◆链接(Linking)gcc起步—HelloWorld在用户当前书目,运用Vi编辑器输入如下代码,并保存成文件hello.c:#include<stdio.h>
intmain(void)
{
printf("Helloworld,Linuxprogramming!\n");
return0;
}然后执行下面的吩咐编译和运行这段程序:编译:gcchello.c-ohello运行:./helloHelloworld结果:Linuxprogramming!
gcc编译过程从程序员的角度看,只需简洁地执行一条GCC吩咐就可以了,但从编译器的角度来看,却须要完成一系列特别繁杂的工作。首先,GCC须要调用预处理程序cpp,由它负责绽开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容。接着,GCC会调用ccl和as将处理后的源代码编译成目标代码。最终,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。gcc编译过程第一步是进行预编译,运用-E参数可以让GCC在预处理结束后停止编译过程:gcc-Ehello.c-ohello.i此时若查看hello.i文件中的内容,会发觉stdio.h的内容的确都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。其次步是将hello.i编译为目标代码,这可以通过运用-c参数来完成:gcc-chello.i-ohello.oGCC默认将.i文件看成是预处理后的C语言源代码,因此上述吩咐将自动跳过预处理步骤而起先执行编译过程,也可以运用-x参数让GCC从指定的步骤起先编译。最终一步是将生成的目标文件链接成可执行文件:gcchello.o-ohellogcc警告提示功能看看如下illcode.c程序,这段代码写得很糟糕,细致检查一下不难挑出很多毛病:#include<stdio.h>
voidmain(void)
{
longlongintvar=1;
printf("ItisnotstandardCcode!\n");
}main函数的返回值被声明为void,但事实上应当是int运用了GNU语法扩展,即运用longlong来声明64位整数,不符合ANSI/ISOC语言标准main函数在终止前没有调用return语句。gcc警告提示功能当GCC在编译不符合ANSI/ISOC语言标准的源代码时,假如加上了-pedantic选项,那么运用了扩展语法的地方将产生相应的警告信息:#gcc-pedanticillcode.c-oillcodeillcode.c:Infunction`main':illcode.c:9:ISOC89doesnotsupport`longlong'illcode.c:8:returntypeof`main'isnot`int'须要留意的是,-pedantic编译选项并不能保证被编译程序与ANSI/ISOC标准的完全兼容,它仅仅只能用来帮助Linux程序员离这个目标越来越近。或者换句话说,-pedantic选项能够帮助程序员发觉一些不符合ANSI/ISOC标准的代码,但不是全部,事实上只有ANSI/ISOC语言标准中要求进行编译器诊断的那些状况,才有可能被GCC发觉并提出警告。除了-pedantic之外,GCC还有一些其它编译选项也能够产生有用的警告信息。这些选项大多以-W开头,其中最有价值的当数-Wall了,运用它能够使GCC产生尽可能多的警告信息:#gcc-Wallillcode.c-oillcodeillcode.c:8:warning:returntypeof`main'isnot`int'illcode.c:Infunction`main':illcode.c:9:warning:unusedvariable`var'GCC给出的警告信息虽然从严格意义上说不能算作是错误,但却很可能成为错误的栖身之所。一个优秀的Linux程序员应当尽量避开产生警告信息,使自己的代码始终保持简洁、美丽和健壮的特性。gcc警告提示功能在处理警告方面,另一个常用的编译选项是-Werror,它要求GCC将全部的警告当成错误进行处理,这在运用自动编译工具(如Make等)时特别有用。假如编译时带上-Werror选项,那么GCC会在全部产生警告的地方停止编译,迫使程序员对自己的代码进行修改。只有当相应的警告信息消退时,才可能将编译过程接着朝前推动。执行状况如下:gcc-Wall-Werrorillcode.c-oillcodecc1:warningsbeingtreatedaserrorsillcode.c:8:warning:returntypeof`main'isnot`int'illcode.c:Infunction`main':illcode.c:9:warning:unusedvariable`var'对Linux程序员来讲,GCC给出的警告信息是很有价值的,它们不仅可以帮助程序员写出更加健壮的程序,而且还是跟踪和调试程序的有力工具。建议在用GCC编译源代码时始终带上-Wall选项,并把它渐渐培育成为一种习惯,这对找出常见的隐式编程错误很有帮助。项目问题三—C程序的调试运行我们编写的程序经过编译之后可以运用如下方法进行运行:./生成的程序名(其中“./”表示当前的工作书目)将生成的程序书目加入到系统搜寻路径的PATH变量(我们将在Shell编程课程中进行介绍)假如编译过程出现错误,须要进行程序的调试,这时我们须要运用的工具是gdb程序调试工具—gdb对于Linux程序员来讲,GDB(GNUDebugger)通过与GCC的协作运用,为基于Linux的软件开发供应了一个完善的调试环境。默认状况下,GCC在编译时不会将调试符号插入到生成的二进制代码中,因为这样会增加可执行文件的大小。假如须要在编译时生成调试符号信息,可以使用GCC的-g或者-ggdb选项。运用任何一个调试选项都会使最终生成的二进制文件的大小急剧增加,同时增加程序在执行时的开销,因此调试选项通常仅在软件的开发和调试阶段运用。程序调试工具—gdb我们运用如下代码说明gdb的运用:#include<stdio.h>
intmain(void)
{
intinput=0;
printf("Inputaninteger:");
scanf("%d",input);
printf("Theintegeryouinputis%d\n",input);
return0;
}
编译并运行上述代码,会产生一个严峻的段错误(Segmentationfault)如下:gcc-gcrash.c-ocrash./crashInputaninteger:10Segmentationfault程序调试工具—gdb为了更快速地发觉错误所在,可以运用gdb进行跟踪调试,方法如下:首先,在对源代码进行编译时加入“-g”选项程序调试工具—gdb运用gdb进行程序的调试我们可以通过运用吩咐“gdbcrash”打开要调试的程序也可以先运用“gdb”吩咐打开gdb环境,然后通过输入“file文件名”的方式打开须要调试的程序程序调试工具—gdb运用“run”吩咐运行程序查看程序中的错误运用“backtrace”吩咐查看具体的错误信息程序调试工具—gdb运用“frame编号”吩咐查看可能的程序错误(编号是在backtrace吩咐的执行结果中)可以看到我们程序的出错在于第8行的scanf语句。运用quit语句退出gdb调试环境,对源程序进行修改,然后编译运行就可以了。vi阶段项目总结通过前面的学习,我们已经可以完成本课程的项目了。具体实施方法如下:运用vi编辑器编写程序源代码运用gcc编译器进行源代码的编译假如程序出现错误,运用gdb进行调试运行程序7.1.4子任务4完成案例练习(1)在/tmp书目下建立一个名为mytest的书目,进入mytest书目当中。(2)将/etc/man.config复制到本书目下面,运用vi打开本书目下的man.config文件。(3)在vi中设定行号,移动到第58行,向右移动40个字符,请问你看到的双引号内是什么书目?(4)移动到第一行,并且向下查找bzip2这个字符串,请问它在第几行?(5)接着下来,我要将50到100行之间的man字符串改为大写MAN字符串,并且一个一个选择是否须要修改,如何下达吩咐?假如在选择过程中始终按y,结果会在最终一行出现变更了几个man呢?7.1.4子任务4完成案例练习(6)修改完之后,突然反悔了,要全部复原,有哪些方法?(7)我要复制65到73这9行的内容(含有MANPATH_MAP),并且粘贴到最终一行之后。(8)21到42行之间的开头为#符号的批注数据假如不要了,要如何删除?(9)将这个文件另存成一个man.test.config的文件。(10)去到第27行,并且删除15个字符,结果出现的第一个单字是什么?在第一行新增一行,该行内容输入“Iamastudent...”;然后存盘后离开。7.1.4子任务4完成案例练习DEMO老师演示或学生完成7.1.5子任务5了解vim编辑环境7.1.5子任务5了解vim编辑环境7.2任务2娴熟驾驭shell
1.
项目课题引入
2.
Shell的概念与原理
3.Shell环境变量的设置
4.Shell脚本的设计与运行(初步)
5.现场演示案例课题引入——项目分析完成本项目须要解决的问题:1、Linux中shell是什么,有什么功能2、如何设定和运用Shell的环境变量3、如何利用shell进行脚本程序的设计课题引入——教学目标学习本课须要实现的教学目标:驾驭shell的基本吩咐驾驭shell的基本概念和作用驾驭shell环境变量概念和运用方法驾驭shell程序的结构和设计方法能够完成本课程提出的项目内容课题引入——应达到的职业实力学生学习本课后应当具有的职业实力:娴熟驾驭Vi编辑器的运用深化理解shell的思想驾驭shell变量和环境变量的设置能够进行基本的shell程序设计能够读懂Linux操作系统中的系统脚本7.2.1子任务1了解shell的基本概念Shell就是用户与操作系统内核之间的接口,起着协调用户与系统的一样性和在用户与系统之间进行交互的作用。Shell最重要的功能是吩咐说明,从这种意义上来说,Shell是一个吩咐说明器。Linux系统中的全部可执行文件都可以作为Shell吩咐来执行。将可执行文件作一个分类,如表所示Shell完成吩咐的说明过程当用户提交了一个吩咐后,Shell首先推断它是否为内置吩咐,假如是就通过Shell内部的说明器将其说明为系统功能调用并转交给内核执行。若是外部吩咐或好用程序就试图在硬盘中查找该吩咐并将其调入内存,再将其说明为系统功能调用并转交给内核执行。在查找该吩咐时分为两种状况:用户给出了吩咐路径,Shell就沿着用户给出的路径查找,若找到则调入内存,若没有则输出提示信息用户没有给出吩咐的路径,Shell就在环境变量PATH所制定的路径中依次进行查找,若找到则调入内存,若没找到则输出提示信息Shell的主要版本下表列出了几种常见的Shell版本7.2.2子任务2相识shell环境变量Shell支持具有字符串值的变量。Shell变量不须要特地的说明语句,通过赋值语句完成变量说明并予以赋值。在吩咐行或Shell脚本文件中运用$name的形式引用变量name的值。shell变量的定义和引用在Shell中,变量的赋值有下列句法格式:name=stringname是变量名,它的值就是string,“=”是赋值符号。变量名是以字母或下划线开头的字母、数字和下划线字符序列。通过在变量名(name)前加$字符(如$name)引用变量的值,引用的结果就是用字符串string代替$name。在定义变量时,若string中包含空格、制表符和换行符,则string必需用’string’或者”sting”的形式,即用单(双)引号将其括起来。双引号内允许变量替换,而单引号内则不行以。shell变量的定义和引用Shell变量的作用域与程序设计语言中的变量一样,Shell变量有其规定的作用范围。Shell变量分为局部变量和全局变量:局部变量的作用范围仅仅限制在其吩咐行所在的Shell或Shell脚本文件中全局变量的作用范围则包括本Shell进程及其全部子进程可以运用export内置吩咐将局部变量设置为全局变量Shell变量作用域举例在当前Shell中定义变量var1在当前Shell中定义变量var2并将设为全局引用变量的值显示当前Shell的PIDShell变量作用域举例调用子Shell,并显示子Shell的PID由于var1没有被export,在子Shell中已无值由于var2被export,所以在子Shell中仍有值返回主Shell,并显示变量的值Shell变量作用域举例(综合)Shell变量作用域举例(综合)Shell的环境变量环境变量是指由Shell定义和赋初值的Shell变量。Shell用环境变量来确定查找路径、注册书目、终端类型、终端名称、用户名等。全部环境变量都是全局变量,并可以由用户重新设置。在Bash中,设置环境变量用set吩咐,吩咐的格式是:set环境变量=变量的值Shell的环境变量举例设置用户的主书目为/home/john,可以用以下吩咐:不加任何参数地干脆运用set吩咐可以显示出用户当前全部环境变量的设置,如:Shell的环境变量举例在环境变量前面加上$符号,表示引用环境变量的值,例如把书目切换到用户的主书目:当修改PATH变量时,如:将一个路径/tmp加到PATH变量前,应当这样设置:Shell的环境变量举例4.吩咐运行的推断依据:;、&&、||4.吩咐运行的推断依据:;、&&、||(2)$?(吩咐回传值)与“&&”或“||”。4.吩咐运行的推断依据:;、&&、||4.吩咐运行的推断依据:;、&&、||4.吩咐运行的推断依据:;、&&、||4.吩咐运行的推断依据:;、&&、||4.吩咐运行的推断依据:;、&&、||【例7-4】以ls测试/tmp/bobbying是否存在,若存在则显示“exist”,若不存在,则显示“notexist”。4.吩咐运行的推断依据:;、&&、||5.工作环境设置文件7.3任务3娴熟驾驭正则表达式grep吩咐用来在文本文件中查找内容,指定给grep的文本模式叫做“正则表达式”。正则表达式可以是一般的字母或者数字,也可以运用特殊字符来匹配不同的文本模式。由于正则表达式运用了一些特殊字符,所以全部的正则表达式都必需用单引号括起来。正则表达式字符可以包含某些特殊的模式匹配字符。句点匹配随意一个字符,相当于shell中的问号紧接句号之后的星号匹配零个或多个随意字符,相当于Shell的星号方括号的用法跟Shell的一样,只是用^代替了!表示匹配不在指定列表内的字符正则表达式匹配字符、量词、限制字符正则表达式的模式匹配字符与模式匹配字符协作运用的量词正则表达式的限制字符正则表达式举例help匹配包含help的行\..$匹配倒数其次个字符是句点的行^...$匹配只有3个字符的行^[0-9]\{3\}[^0-9]匹配以3个数字开头跟着是一个非数字字符的行^\([A-Z][A-Z]\)*$匹配只包含偶数个大写字母的行正则表达式举例正则表达式举例正则表达式举例7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式7.3.4子任务4练习基础正则表达式(3)行首与行尾字节^$。7.3.4子任务4练习基础正则表达式(3)行首与行尾字节^$。7.3.4子任务4练习基础正则表达式(3)行首与行尾字节^$。7.3.4子任务4练习基础正则表达式(3)行首与行尾字节^$。7.3.4子任务4练习基础正则表达式(3)行首与行尾字节^$。7.3.4子任务4练习基础正则表达式(3)行首与行尾字节^$。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(4)随意一个字符“.”与重复字节“*”。7.3.4子任务4练习基础正则表达式(5)限定连续RE字符范围{}7.3.4子任务4练习基础正则表达式(5)限定连续RE字符范围{}7.3.4子任务4练习基础正则表达式(5)限定连续RE字符范围{}7.3.5子任务5基础正则表达式的特殊字符汇总请查询教材相关内容任务4驾驭输入输出重定向与管道吩咐所谓重定向,就是不运用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防医学试题及答案
- 学校食堂食品从业人员考试题及答案
- 四川南充市高坪中学2024-2025学年九年级下学期语文中考模拟预测(三)(文字版含答案)
- 湖南省益阳市高职单招2026-2026学年综合素质自考预测试题(含答案)
- 蚌埠市公路工程试验检测师资格考试(公共基础)全真模拟试题及答案(2026年)
- 2026年山西职业技术学院单招职业技能考试题库及答案
- 2026年保安员资格考试复习试题多选题50题及答案
- AM通信原理课程设计
- 音乐可视化网页设计入门课程设计
- 城市轨道轨道课程设计
- 临床中心静脉通路装置拔除护理临床案例分享
- 视频头脉冲试验(vHIT)诊断技术
- 2025浙江钱江实验室有限公司第三批招聘工作人员3人笔试历年参考题库附带答案详解
- 施工升降机安装生产安全事故应急救援预案
- 夜间施工安全监理实施细则
- 2025 年大学化学工程与技术(反应工程)上学期期末测试卷
- 2026中电金信数字科技集团股份有限公司招聘小语种AI标注15人考试参考试题及答案解析
- 安宁疗护评价与考核制度
- 建设工程进度控制与管理规范
- 中医方剂学试题库带答案
- 广西工匠学院建设方案
评论
0/150
提交评论