UNIX Linux实验教程 2实验二 UNIXLinux环境程序设计基础_第1页
UNIX Linux实验教程 2实验二 UNIXLinux环境程序设计基础_第2页
UNIX Linux实验教程 2实验二 UNIXLinux环境程序设计基础_第3页
UNIX Linux实验教程 2实验二 UNIXLinux环境程序设计基础_第4页
UNIX Linux实验教程 2实验二 UNIXLinux环境程序设计基础_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验二 Linux/Unix环境程序设计基础一. 实验目的1. 掌握使用Linux环境下的常用编辑工具编辑程序的方法。2. 熟悉shell程序设计的基本技术。3. 掌握Linux环境下使用GNU gcc/gdb等工具进行程序设计的基本技术。二. 实验指导1. Linux的文本编辑工具在Linux环境下可使用vi、emacs、kate、kedit等编辑工具编写源代码,其中emacs和vi可在字符模式下运行,而kate和kedit需在图形用户界面下使用,都是全屏幕编辑工具,使用简单,kate带有一个文件列表区、一个文件编辑区和一个命令输入区,是一个编写程序的好工具。启动vi、kate和kedit编

2、辑文件的命令行方法如下:$ vi 程序文件名 $ kate 程序文件名 $ kedit 程序文件名kate和kedit的图形界面启动方法:.开始菜单|运行命令|kate开始菜单|运行命令|kedit)2. shell程序设计基础 shell是用户与Linux操作系统之间的接口,是命令语言、命令解释程序和程序设计语言的总称。用户在提示符下输入的命令都由shell先加以解释,然后传给Linux内核,或调用相关程序执行。shell支持绝大多数高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构,可以解释执行包含这些结构的shell程序。Linux中有多种shell,如bash、ksh、csh

3、等,默认的是bash。 当用户打开终端后,系统为该终端建立一个程序shell的进程,由进程去读入、识别和执行用户输入的各种命令。Linux命令有可执行二进制程序和shell程序,shell程序类似于DOS中的批处理程序。(1) shell程序的编辑shell程序可用编辑工具vi、kate、kedit等编写,并保存为一个磁盘文件。Shell程序的第一行通常为#!/bin/bash,告知Linux使用/bin/bash解释执行该程序。(2) shell程序的执行方法一:bash shell文件名方法二:直接执行。将shell程序的权限设置为644。键入 ./shell程序名(3) I/O重定向sh

4、ell程序中经常涉及到输入输出。Linux有通过3个特殊文件实现信息的输入输出:标准输入(stdin, 文件描述符为0)、标准输出(stdout,文件描述符为1)和标准错误输出(stderr, 文件描述符为2)。Shell通过标准输入接受用户的键盘命令,将执行结果送往标准输出从终端显示,而将出错信息写到标准错误输出,而从终端显示。Linux通过I/O重定向,可以改从文件输入命令,将输出结果或出错信息改送文件。以下是一些示例:1) 输出重定向命令格式:command file 或command file 将命令输出信息写到文件例:ls l fileinfo 将当前目录下的文件信息以长格式方式保存

5、到文件fileinfo中,覆盖原来的内容;datefileinfo 将date命令的输出追加到文件fileinfo后;2) 输入重定向命令格式:command file 从文件读命令信息例:wc& file 或command &file(4) 管道将前一命令的输出作为后一命令的输入。命令格式:命令1|命令2|命令3例:who | sort user_list 将who命令的结果排序,写入文件user_list。(5) shell变量shell变量只有字符类型,其值为字符串,变量名以字母或下划线开始,大小写敏感,用$var的形式引用名为var的变量的值。定义格式:变量名=变量值例:$ no=10

6、 $ hello=”hello everybody” $ echo $no $ echo $hello环境变量:shell定义的与工作环境有关的变量,可由用户修改。 HOME 保存登录主目录的完全路径名 PATH 保存命令搜索路径,多个路径间以”:”隔开 PWD 当前工作目录的绝对路径名 PS1 主提示符预定义变量:由shell定义,用户不能修改。 $? 前一命令执行的返回状态 $ 当前进程的pid 位置变量:shell程序命令行参数由shell写到位置变量中,可在程序中引用$0 当前进程的进程名$1 第1个命令行参数$2 第2个命令行参数$3 第3个命令行参数$# 位置参数个数(6) 条件执

7、行语句格式:if 条件 then 命令行 else 命令行 fi条件格式: 测试语句 或 test 测试语句文件测试: -e filename 如果文件存在 -r filename 如果文件存在并可读 -x filename 如果文件存在且可执行 -w filename 如果文件存在且可写 -d filename 如果文件存在且为目录 -f filename 如果文件存在且为普通文件数值测试: test n1 eq n2 整数n1和n2相等 test n1 ne n2 整数n1和n2不相等 test n1 gt n2 整数n1大于n2 test n1 ge n2 整数n1大于或等于n2字符串测

8、试: test s 测试字符串非空 test s1=s2 字符串s1等于s2 test s1!=s2 字符串s1不等于s2 test z s 字符串s为空串例:#!/bin/bash if $# -ne 1 then echo “Usage - $0 file-name”exit 1fi if test f $1 then echo “$1 file exists” elseecho “sorry, $1 file does not exits” fi(7) case语句 利用case语句可根据字符串或变量的值从多个选项中选择一项执行格式:case string in expr1) 命令行1;

9、 expr2) 命令行2; *) 其它命令行; esac例:从命令行输入一个简单的算术表达式,计算结果: #!/bin/bash if test $#=3 then case 2 in +) let z=$1+$3 ; -) let z=$1-$3 ; /) let z=$1/$3 ; X|x) let z=$1*$3 ; *) echo error exit 1; esac echo Answer is $z fi 测试:$./test 5 + 7(8) 循环for循环格式: for 变量名 in 数值列表 do命令行 donefor循环例: #!/bin/bash for i in 1 2

10、 3 4 5 doecho Welcome $i times donewhile循环格式: while 命令行1 do命令行2 donewhile循环例:显示number=10; number=20;一直到number=100。 #!/bin/bash i=1 while $i le 10 doecho number=expr $i *10 ; expr表示对表达式求值i= expr $i+1 donebreak和continue:可于用终止循环和开始下一重循环(9) shell程序调试shell程序的调试主要通过利用shell解释程序的-v和-x选项跟踪程序的执行过程来实现。调用格式:bas

11、h 选项 shell程序文件名选项含义:-v 当读入shell输入行时把它们显示出来 -x 执行命令时把命令和它们的参数显示出来3. Linux环境下C/C+程序设计基础 在UNIX/Linux环境下,开发应用程序的流程如图2.1所示。 一个应用程序的开发大概包括5个过程:(1) 编辑程序。使用源代码编辑器产生源代码,C/C+语言的源程序后缀为.c和.cpp。(2) 编译程序。使用编译程序将源程序编译成目标代码文件,目标代码文件的后缀通常为.o。UNIX/Linux环境常用的编译工具是gcc。(3) 链接程序。使用连接程序将目标代码文件与系统库文件链接形成可执行程序。连接程序通常与gcc集成在

12、一起。(4) 加载和运行程序。将生成的可执行程序加载到内存运行。(5) 调试程序。使用ddd/gdb等调试工具对程序进行调试。ddd是gdb的图形界面。(6) 打包发行程序。将完成了调试和测试的程序打包发行。 下面使用一个示例说明在Linux环境下开发一个应用程序的过程。假定现在有一个C语言文件hw.c,其内容如下:#include main() printf(hello worldn); exit(0); 第一步:使用vi或kate等编辑工具编写以上源程序,并取名为hw.c;第二步:使用gcc编译链接源程序hw.c生成可执行程序。 命令格式:$ gcc -g -o 选项说明:-o 后面的参数

13、指明生成的可执行程序名,如果没有该选项,则可执行程序名为a.out -g 在生成的可执行二进制程序中加入调试信息,以便进行源代码级调试 本例命令:$ gcc g o hw hw.c第三步:运行程序。命令格式为: $ ./hw第四步:如果程序需要调试,可以借助ddd/gdb进行源代码级的调试。启动调试命令是: $ ddd hw 说明:ddd调试工具的用户界面与VC+等开发环境很相似,可以在GUI环境中设置断点、单步执行、检查变量和寄存器的值等。三. 实验内容 1. 编辑、分析、理解和调试一个shell程序; 2. 编辑、分析、理解和调试一个C/C+语言程序。四. 实验步骤(一)shell程序的分

14、析、运行与调试1. 使用kate、kedit和vi等编辑工具编辑shell程序rename.sh,该程序对可改名一个文件,其内容为:#!/bin/sh _echo Old filename: _read old _echo New filename: _read new _mv $old $new _echo File $old is now called $new. _date _为以上程序各行加上注释,注释写在每行后面。2. 创建一个待改名的文件。写出命令并执行之。命令:_3. 执行rename.sh。命令为 $ sh rename.sh按顺序写出该shell程序运行时的输入信息和显示结果:_4. 使用-x选项调试执行该rename.sh。命令行为 $ sh x rename.sh写出程序执行时输入信息和显示结果,并注明哪些行是用户输入信息?哪些行是shell程序执行的输出信息?哪些行是shell命令?5. 如果要直接执行rename.sh,应该输入以下命令:_6. 使用-x选项进行shell程序调试的原理是什么?答:(二)C/C+语言程序的分析、运行与调试1. 使用编辑工具(kate、kedit、vi等

温馨提示

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

评论

0/150

提交评论