1、嵌入式操作系统实验指导书 苗暹 黄连丽 1 / 84目 录实验一 Linux命令使用实验二 vi编辑器的使用实验三 shell编程实验(一)实验四 shell编程实验(二)实验五 Linux开发工具的使用实验六 Linux编程实验(一)实验七 Linux编程实验(二)实验八 Linux的系统及网络管理实验实验一 Linux命令使用班级: 姓名: 学号: 上机时间: 任课教师: 实验教师: 实验成绩: 一、实验目的1 掌握Linux的一般命令格式。2 掌握有关文件和目录操作的常用命令。3 掌握有关进程操作的常用命令。4 熟练使用man命令。二、实验注意事项实验环境与系统是共用设施,请不要在系统内
2、做对系统或对其他用户不安全的事情。要求每个同学登录后系统后,要在主目录(/home/student)下创建一个属于自己的子目录(以自己(拼音)名字或学号)。以后所有工作都要在自己的目录内进行。建议以后的实验都在同台计算机上做,这样可以保持连续性。三、实验内容及步骤:1登录进入系统。双击 VMware Workstation 进入虚拟机,再 点击 u 登陆Ubuntu,输入用户名: ,输入密码: ,进入Ubuntu图形桌面环境。2使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。要启动一个终端,可以选择 应用程序/附件/终端 。在终端提示符下输入:date在
3、屏幕上显示系统的日期和时间。 显示 2014年10月06日 星期一 19:05:06 CST 。在终端提示符下输入:who 显示: mxtty72014-10-06 19:02(:0)mxpts/02014-10-06 19:04(:0.0)在终端提示符下输入:who am I 显示: mxpts/02014-10-06 19:04(:0.0) 。在终端下显示Hello! 命令: echo Hello! 。在终端提示符下输入:clear 显示: (清屏作用) 。在终端提示符下输入:cal 显示: 当前日历(10月份日历)。3浏览文件系统:(1)运行pwd 命令,确定当前工作目录,记录之: /h
4、ome/mx 。(2)运行ls命令,查看当前目录下有哪些文件和子目录,简略记录。 (3)运行ls -l命令,理解文件各字段的含义,找一个文件标注。 -rwxr-xr-x 1 mx mx 711 2008-11-04 11:41 driver1.c drwxr-xr-x 2 mx mx 4096 2013-12-09 23:00 Lsy3 文件类型与权限 链接数 文件主 文件组 文件大小 建立或修改时间 文件名文件类型:-普通文件,d目录文件,b块设备文件,c字符设备文件,l符号链接文件。文件存取权限:r读,w写,x执行,- 没有设置权限。(4)运行ls -ai命令,理解各字段的含义。比如:18
5、272 conversion 字段第一项是18272是I结点号,第二项是文件名或目录名。-a显示指定目录下所有子目录和文件,包括以“.”开头的隐藏文件(如.cache) -i 在输出的第一列显示文件的I节点号。(5)使用cd /命令,将当前目录改变为根目录(/)。运行ls -l命令,结合书中给出的Linux树状目录结构,了解各目录的作用。命令: cd / 回到: 根目录 命令: pwd 显示: / 命令: ls -l 显示:(简略记之) bin dev media proc boot home mnt root usr sys 等等。 (6)直接使用cd,回到了那里?用pwd验证之。 命令:
6、cd 回到: 主目录 命令: pwd 显示: /home/mx (7)用 mkdir建立一个子目录subdir。命令: mkdir subdir (8)将当前目录改到subdir。 命令: cd subdir 4文件操作:(1)验证当前目录在subdir。 命令: pwd 显示: /home/mx/subdir (2)运行datefile1,然后运行cat file1,看到什么信息? 命令: datefile1 ,命令: cat file1 显示:2014年10月06日 星期一 20:15:04 CST “ 将命令(或可执行程序的)输出重新定向到指定文件,这样该命令的输出就不在屏幕上显示,而是
7、写入到文件中。”是什么符号? 输出重定向符 解释“ datefile1将date命令的输出重定向到file1中。 ”的含义: 将当前时间保存至file1中,若file1不存在,则创建之后保存 (3)先cd .回到上级目录,再运行cat subdir,会有什么结果?为什么?结果: cat: subdir: Is a directory 为什么? subdir是个目录,cat只能查看文件,无法查看目录信息 。 (4)分别用cat和more查看文件内容(提示:/etc/manpath.config)。比较cat和more这两个命令的异同。这两个命令都是显示文件内容,cat直接全屏显示,more分屏显
8、示,按space键继续下一屏。(5)利用man 命令显示date命令的使用说明。 命令: man date 显示:(简略记之) 按space键继续下一屏显示 。 如何从man命令状态退回到终端窗口? 按q键退回到终端 。(6)运行man datefile1,再运行cat file1 ,看到什么? 命令: man date输出附加定向符:将命令(或可执行程序的)输出附加到指定文件的后面,该文件原来的内容不被破坏。file1 命令: cat file1 显示:首先显示当前日期,之后显示date命令的使用帮助。 man datefile1含义: 将date命令的使用帮助附加在file1文件之后 。(
9、7)利用ls -l file1,了解链接计数是多少?运行 ln file1 ./fa,再运行ls -l file1,看链接计数有无变化?用cat命令显示fa文件内容。(注意:做完后要删除所做硬链接,恢复原样以便后面同学再做此实验)命令:ls -l file1 显示的链接计数: 1 命令:ln file1 ./fa将file1文件链接到上级目录下的文件fa(硬链接)。 命令:ls -l file1 显示的链接计数: 2 ,有无变化? 有变化 。命令:cat ./fa 显示: 2014年10月06日 星期一 20:15:04 CST 。修改file1粉色部分是新增加内容。修改了file1文件使得链
10、接文件一并修改。文件:calfile1, 显示file1内容:cat file1, 结果:在日期的后面附加了本月日历。再查看链接文件fa内容:cat ./fa,显示:2014年10月06日 星期一 20:15:04 CST 十月 2014一 二 三 四 五 六 日 1 2 3 4 5 6 7 8 9 10 11 12省略删除硬链接: rm ./fa 删除上级目录下的链接文件fa。(8)使用head和tail命令分别显示file1文件的前十行和后十行的内容。 命令: head file1 命令: tail file1 (默认是10行) 命令: head -10 file1 或者 head -n
11、10 file1 命令: tail -10 file1 (9)运行cp file1 file2,然后ls -l,看到什么? 命令:cp file1 file2 ls -l 看到了:file1 file2 (屏幕上除了file1文件外,多了一个file2文件) 解释显示结果:cp命令将file1内容复制到file2中 。 运行mv file2 file3, 然后ls -l,看到什么? 命令:mv file2 file3 ls l 看到了:file1 file3 (file2文件消失,多了一个file3文件) 解释显示结果:将文件file2改名为file3 运行cat f*,结果怎样? 命令:ca
12、t f* file1、flie3内容显示在屏幕上 解释显示结果: *号是通配符,可匹配到所有以f 开头的文件,所以上述命令:显示所有以f开头文件的内容 (10)运行rm file3,然后ls -l,看到什么? 命令:rm file3 命令:ls -l 看到:file3文件消失 解释显示结果: rm命令将file3删除 (11)在/etc/passwd文件中查找适合你的注册名的行。 命令: grep -F mx /etc/passwd 显示:mx:x:1000:1000:mx,:/home/mx:/bin/bash 待解释?(12)运行ls -l理解各文件的权限是什么?(选择两个不同文件标注)-
13、rwxr-xr-x 1 mx mx 9159 2013-11-26 02:14 tst.out(13)用两种方式改变file1的权限(实例)。以符号模式改变权限: chmod a+w tst.out (所有用户都有写权限) 再用ls -l tst.out 显示:-rwxrwxrwx 1 mx mx 9159 2013-11-26 02:14 tst.out以符号模式改变权限:chmod u=rwx, g=rx, o=r file1 (用户有读写执行权限,组有读执行权限,其他有读权限)再用ls -l tst.out 显示:rwxr-xr- 1 mx mx 9159 2013-11-26 02:1
14、4 tst.out以绝对方式改变权限: chmod 0664 file1 (110,110,100文件主和同组用户具有读、写权限,其它用户只可读)(14)统计file1文件的行数、字数、字节数。 命令: wc file1 显示: 191 733 5732 file1 解释各参数的含义: 行数 字数 字节数 文件名 (15)运行命令man ls |more “man ls |more”的含义: 分屏显示ls命令帮助信息 运行cat file1|head -20|tee file5,结果如何? 显示结果: 显示file1前20行内容 “cat file1|head -20|teetee指令会从标准
15、输入设备读取数据,将其内容输出到标准输出设备,同时保存至文件。 file5”的含义: 将file1中前20行保存至file5中,并显示在屏幕上 。 运行cat file5|wc,结果如何? 显示结果: 20 61 544 “cat file5|wc”的含义: 统计file5文件的行数,字数,字节数。 (16)运行cd,回到主目录,运行mkdir mydir,建立mydir 子目录,运行ls -l查看目录,再运行rmdir mydir,看到什么结果?如果要删除mydir目录,该如何操作? 运行命令:cd 回到: 主目录/homw/mx 运行命令:mkdir mydir 建立: mydir子目录
16、运行命令: ls -l mydir 查看所建目录内容,显示:total 0 运行命令:cp /etc/profile /home/student/mydir 解释该命令: 将etc下的profile 拷贝至mydir子目录中 查看mydir内容命令: ls mydir 显示:profile 运行命令: rmdir mydir 看到什么结果: rmdir:failed to remove mydir:Directory not empty 如何处理? 先清空mydir子目录内容,再删除该子目录。 rm mydir/*, rmdir mydir, ls mydir。 注意:在这个实验中没有特别的难
17、点,但是要注意的是,rm命令删除文件的时候,不给任何提示,因此一定要谨慎,不然很容易删除不应该删除的文件。四、实验报告要求1按实验步骤写出实验命令及运行结果,回答所提问题。2总结上机过程中所遇到的问题和解决方法及感想。实验二 vi编辑器的使用 班级: 姓名: 学号: 上机时间: 任课教师: 实验教师: 实验成绩: 一、实验目的学习使用vi编辑器建立、编辑、显示以及加工处理文本文件。二、实验注意事项实验室内的实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。要求每个同学登录后系统后,要在自己的家目录下创建一个属于自己的子目录(以自己(拼音)名字或学号)。以后所有工作都要在
18、自己的目录内进行。建议以后的实验都在同台计算机上做,这样可以保持连续性。三、实验内容及步骤1进入和退出vi(1)进入vi,创建一个file.c文件。 命令: vi file.c 。(2)进入插入方式,输入如下C程序,将该文件存盘,回到shell状态下。 #includeint main()float a,b,x; /int a,b,x;printf(Please input a,b:);scanf(%5.2f,%5.2f,a,b); / scanf(%d,%d,&a,&b);x=a%b;printf(x=%5.2fn,x); /printf(x=%dn,x);return 0; 进入插入方式命
19、令: i ,文件存盘回到shell状态命令: :wq 。(3)运行gcc file.c -o myfile,编译该文件,会发现错误提示,理解其含义。 编译命令:gcc file.c -o myfile 警告: file.c:5:warning:unknown conversion type character . in format 。 错误: file.c:6:error:invalid oprands to binary %(have float and float) 。(4)重新进入vi,对该文件进行修改,然后存盘,退出vi。重新编译该文件,如果编译通过,运行该程序。运行程序命令:./m
20、yfile注意:在错误程序行旁边注释正确程序。(5)运行man datefile10,然后用vi打开file10文件,使用x,dd命令删除某些文本行,使用u命令复原此前的情况,使用c,r,s等命令修改文本内容,使用检索命令进行给定模式的检索。 删除光标所在字符: x 。从光标位置(包括光标位)向右删5个字符命令: 5x或者d5l 。 删除光标前面字符: X 。从光标位置(不包括光标位)向左删5个字符命令:5X或者d5h 。删除光标所在的整行: dd 。从光标位置(包括光标位)删至到行尾命令: D 或者 d$ 。从光标位置(不包含光标位)删至到行首命令: d0 。 复原命令:u(取消刚才插入或删
21、除命令)。U(直接把当前行恢复成它被编辑之前的状态,不管做了多少次修改)。 修改命令举例:(修改文本对象是用新输入的文本代替老的文本,等价于用删除命令删除老文本,然后用i命令输入新文本,再按ESC回到命令状态) c: 如:c5GHello!+ESC 删除光标所在行到第5行文本,然后输入Hello!,再按ESC C: 如:CWelcome!+ESC 修改从光标位置开始到该行尾(用$符标记)文本,用welcome替代 cc: 如:ccHow nice!+ESC 删除当前行,用How nice!替代 取代命令举例: r: 如:r9用9取代光标所在字符,5rA从光标位开始向右有5个字符被A取代,按ES
22、C R: 用随后输入的文本取代光标位及其后面的字符,每输入一个取代一个,最后按ESC 替换命令举例: s: 用随后输入的正文替换光标所在的字符(处于插入状态,光标后面字符仍保存),按ESC S: 用随后输入的正文替换当前整行,若3S,则表示有3行(包含当前行)将被新文本替代 搜索命令: 向前字符串检索举例:/date+Enter(/模式+Enter键) 解释:从当前行开始向前查找date字符串 /current/-+Enter(/模式/位移+Enter键) 解释:从当前行开始向前查找date字符串,光标停在首先找到行的前一行的行首。/current/-数字+Enter(/模式/位移+Enter
23、键) 解释:从当前行开始向前查找date字符串,光标停在(行号=匹配行号-n)的行首。/current/+Enter(/模式/位移+Enter键)解释:从当前行开始向前查找date字符串,光标停在首先找到行的下一行的行首。/current/+数字+Enter(/模式/位移+Enter键)解释:从当前行开始向前查找date字符串,光标停在(行号=匹配行号+n)的行首。向后字符串检索举例:?man+Enter(?模式+Enter键) 解释:从当前行开始向后查找man字符串 ?man?-+Enter (?模式?位移+Enter) 解释:从当前行开始向后查找man字符串,光标停在首先找到行的前一行的行
24、首 查找字符命令举例: fg (f字符) 解释: 在当前行上向前找字符g Fd (F字符) 解释: 在当前行上向后找字符d 置标记命令:(待添加命令) 全局替换命令举例: :g/time/ s/TIME/gc 解释:用TIME替换所有出现的time,并确认替换。 :1,$s/time/TIME/gc 解释: 从第一行到最后一行的行尾,用TIME替换所有出现的time,并确认替换。 2新建文件(1)请在主目录(/home/student)下建立一个名为 vitest 的目录; 命令: cd 回车, mkdir vitest (2)进入 vitest 这个目录当中; 命令: cd vitest (
25、3)将 /etc/manpath.config 拷贝到本目录下; 命令: cp /etc/manpath.config (4)使用 vi 开启本目录下的 manpath.config 这个文件; 命令: vi manpath.config (5)在 vi 中设定一下行号; 设置行号命令: :set nu 。(取消行号命令: :set nonu 。)(6)移动到第67 行,向右移动 26 个字符,请问您看到的是什么目录? 移动到第67 行的命令: 67G可用Ctrl+G得到当前行的行号。 向右移动 26 个字符的命令:26l or 26+Space键 or 26- 看到: /var/cache/
26、man (7)再向左移动16个字符的命令:16h or 16+Backspace键 or 16- 看到: /usr/share/man (8)回到当前行第一个字符处命令: 0 or 移动到当前行的行尾命令: $ (9)移动到第5行(包含当前行)词尾命令: 5Ge 。再回到当前行的第一个字符处: 0 。(10)光标向前移至下一个词的开头命令: w或W 。(11)光标后退到前一个词的开头命令: b或B 。(12)移动到第一行,并且向下搜寻一下 modify 这个字符串,请问他在第几行? 移动到第一行: 1G , 向下搜寻一下“modify ” /modify+Enter键 它在 76 行。(13)
27、接着下来,我要将 50 到 70 行之间的 name 改为 NAME ,并且一个一个挑选是否需要修改,如何下达指令? 命令: :50,70s/name/NAME/gc 或者 :50,70g/man/s/MAN/gc (14)修改完之后,突然反悔了,要全部复原,有哪些方法? u大写还是小写? or :q!(不保存退出vi) (15)我要复制51到60行这十行的内容,并且贴到最后一行之后; 51G10yyG$p or 51G10yy:$回车p (16)删除11到30行之间的20行; 11G20dd or 11Gd30G or :11,30d or 11G:.,19d(先到11行,再用ex命令删除当
28、前行和它后面的19行)(17)到第29行,并且删除 15 个字符; 29G 再15x 或者 29G 再d15l (18)将这个文件另存成一个 man.test.config 文件; :w man.test.config (19) 请问目前的文件有多少行与多少字符?用什么命令统计? 命令::w 或者回到shell窗口用wc lw manpath.config (20)储存后离开吧。 :wq! 四、实验报告要求1按实验步骤写出实验命令及运行结果,回答所提问题。2总结上机过程中所遇到的问题和解决方法及感想。资料:复制操作:yy:复制当前整行的内容到vi缓冲区yw:复制当前光标所在位置到单词尾字符的内
29、容到vi缓存区,相当于复制一个单词y$:复制光标所在位置到行尾内容到缓存区y:复制光标所在位置到行首内容到缓存区#yy:例如:5yy就是复制5行#yw:例如:2yw就是复制两个单词如果复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。粘贴操作:粘贴的命令式p,即put(放下) p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面 P 大写P代表贴至游标前(上)整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)。实验三 shell编程实验(一)班级: 姓名: 学号: 上机时间: 任课教师
30、 实验教师: 实验成绩: 一、实验目的1了解shell的作用和主要分类。2掌握bash的建立和执行方式。3掌握bash的基本语法。4综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程。二、实验注意事项实验室内的实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。要求每个同学登录后系统后,要在自己的家目录下创建一个属于自己的子目录(以自己(拼音)名字或学号)。以后所有工作都要在自己的目录内进行。建议以后的实验都在同台计算机上做,这样可以保持连续性。三、实验内容1利用vi 建立一个脚本文件,该文件在用户输入年、月之后,自动打印出该年该月的日历。然后以3种不
31、同方式执行该脚本,如有不能执行情况,请说明原因。vi mycal(进入vi环境输入下列脚本程序) echo “Please input month:”read month #从键盘读入月份给month变量echo “Please input year:”read year #从键盘读入年份给year变量cal $month $yearbash :wq!回车(保存文件并退出vi)执行脚本方法:方法一:输入定向到shell脚本(格式:$bash脚本名)$bashif1EOF #在注释中给出这样定义文件并输入脚本的原因。echo n “word 1:”read word1echo n “word 2
32、 # -n表示显示完word2后光标不换行read word2if test “$word1” = “$word2” #注意“=”前后应有空格 then echo “Match”fiecho “End of program.”EOF #结束输入,回到shell窗口。注意EOF前面不能有空格, EOF后面必须是回车符。运行脚本程序:将shell脚本的权限设置为可执行,然后在提示符下直接执行。(用chmod命令)$chmod a+x if1 #把mycal设置为对所有用户都有“执行”权限。 $PATH=$PATH:. #将脚本所在的目录添加到命令搜索路径(PATH)中。$if1 #输入脚本名直
33、接执行该脚本3修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同显示“Match”,不同则显示“Not match”,最后显示“End of program”。请使用ifthenelse控制结构。iftest-commandthencommandTurefiFalse参考程序:$catif2 echo -n word1:read word1echo -n word2:read word2if “$word1 = $word2 then echo Match!else echo No Match! fiecho End of program!Ctrl+D #
34、结束输入,回到shell窗口。4编程使用case结构创建一个简单的菜单,屏幕显示菜单:a. Current date and timeb. User currently logged inc. Name of the working directoryd. Contents of the working directoryEnter a,b,c or d:根据用户输入选项做相应操作。参考程序:$catmenu1 echo e “nCOMMAND MENUn” #后面使用了转义字符n,所以前面一定使用选项-e。echo “ a. Current date and time”echo “ b. User currently logged in”echo “ c. Name of the working directory”echo e “ d. Contents of the working directoryn”echo n “Enter a,b,c or d:”read answer