《实验三Shell和Vi编辑器.doc》由会员分享,可在线阅读,更多相关《实验三Shell和Vi编辑器.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date实验三Shell和Vi编辑器实验三Shell和Vi编辑器实验二 Shell和Vi编辑器一. 实验目的:1. 熟悉shell的各项功能;2. 掌握Linux系统终端方式使用的编辑器vi;3. 学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。二. 实验内容:1. 练习使用shell的各项功能;2. 熟练掌握vi编辑器的使用。三. 实
2、验练习:1. 熟悉Shell环境,使用Shell的各种功能1) 命令补齐功能l 用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补齐命令的后半部分。l 用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab键,由于以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。l 再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列表。l 在列表中查找mkdir命令,看看还需要多输入几个字母才能确定mkdir这个命令,然后输入需要的字母,再按tab键,让shell补齐剩下的命令。l 最后输入要创建的目录名,按回车键执行命令。l 多试几
3、个命令利用tab键补齐。2) 命令别名功能l 输入alias命令,显示目前已经设置好的命令的别名。l 设置别名ls为ls l,以长格形式显示文件列表:alias ls=ls -l。l 显示别名ls代表的命令,确认设置生效:alias ls。l 使用别名ls显示当前目录中的文件列表。l 在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命令列表:ls。l 删除别名ls:unalias ls。l 显示别名ls,确认删除别名已经生效:alias ls。l 最后再用命令ls 显示当前目录中的文件列表。l 写出定义别名cde为:cd /etc的命令( )。3) 输入、输出重定向和管道(1)
4、 输出重定向l 用ls命令显示当前目录中的文件列表:ls l。l 使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中:ls l list。l 查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list。l 再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中。这次使用管道符号进行重定向:ls l list。l 查看文件list的内容,可以看到用进行重定向是把新的输出内容附加在文件的末尾,注意其中两行list文件的信息中文件大小的区别:ca
5、t list。l 重复命令ls l list。l 再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小和创建时间的区别,完成课后第一题。(2) 输入重定向l 使用输入重定向,把上面生成的文件list用mail命令发送给自己:mail root list。l 查看新邮件,看看收到的新邮件中其内容是否为list文件中的内容。(3) 管道l 利用管道和grep命令,在上面建立的文件list中查找字符串list:#cat list | grep list。l 利用管道和wc命令,计算文件list中的行数、单词数和字符数:#cat list | wc。4) 查看和修改Shell变量l
6、 用echo命令查看环境变量PATH的值:echo $PATH。l 设置环境变量PATH的值,把当前目录加入到命令搜索路径中去:PATH“$PATH:.”。l 用echo命令查看环境变量PATH的值:echo $PATH。l 比较前后两次的变化。2 Vi编辑器1) 运行编辑器vi。2) 学习vi常用命令 :语法:vi 文件名对指定的文件执行vi编辑程序。(2) 参数:文件名:要编辑的文件名。以下是可在vi中使用的部分命令:Esc:按键将返回命令模式,允许输入新命令。r:替换一个字符。R:无限制地在一行中替换。i:插入模式。dd:删除一行。x:删除一个字符。$:行尾。:行的开始。:x:写文件并退
7、出vi。:q!:退出vi,不存文件。/:允许输入查询模式。3) 在vi中编写一个abc.c程序,对程序进行编译、连接、运行。具体如下:studentenjoy student$ cd abcstudentenjoy abc$ vi abc.cmain()int i,sum=0;for(i=0;i=100;i+)sum=sum+i;printf(n1+2+3+.+99+100=%dn,sum);studentenjoy abc$ gcc -o abc abc.cstudentenjoy abc$ lsabc abc.cstudentenjoy abc$ ./abc1+2+3+.+99+100=5
8、050studentenjoy abc$studentenjoy abc$4) 从如上内容的基础上总结vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。5) 编写一个程序解决“鸡兔同笼”问题。 参考程序:#include main()int h,f;int x,y;printf(请输入头数和脚数:);scanf(%d,%d,&h,&f);x=(4*h-f)/2;y=(f-2*h)/2;printf(鸡=%d 兔子=%d,x,y);运行结果:请输入头数和脚数:18,48鸡=12 兔子=6注:鸡+兔子=头2鸡+4兔子=脚x+y=h2x+4y=f四. 思考题:1. 输出重定向和的区别是什么?2. 通常命令中的-r和-f参数分别表示什么?3. bash比sh有哪些方便用户使用的功能?-