实验三  Shell和Vi编辑器
一.  实验目的:
1.        熟悉shell的各项功能;
2.      掌握Linux系统终端方式使用的编辑器vi;
3.      学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查/替换等命令。
二.    实验内容:
1.      练习使用shell的各项功能;
2.      熟练掌握vi编辑器的使用。
三.  实验练习:
1.      熟悉Shell环境,使用Shell的各种功能
1)      命令补齐功能
        用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补齐命令的后半部分。
        用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab键,由于以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。
        再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列表。
        在列表中查mkdir命令,看看还需要多输入几个字母才能确定mkdir这个命令,然后输入需要的字母,再按tab键,让shell补齐剩下的命令。
        最后输入要创建的目录名,按回车键执行命令。
        多试几个命令利用tab键补齐。
2)      命令别名功能
        输入alias命令,显示目前已经设置好的命令的别名。
        设置别名ls为ls –l,以长格形式显示文件列表:#alias ls=‘ls -l’。
        显示别名ls代表的命令,确认设置生效:#alias ls。
        使用别名ls显示当前目录中的文件列表。
        在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命令列表:#\ls。
        删除别名ls:#unalias ls。
        显示别名ls,确认删除别名已经生效:#alias ls。
        最后再用命令ls 显示当前目录中的文件列表。
        写出定义别名cde为:cd /etc的命令(                      )。
3)      输入、输出重定向和管道
(1)          输出重定向
        用ls命令显示当前目录中的文件列表:#ls –l。
        使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中:#ls –l > list。
        查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。这说明shell是首先创建了一个空文件,然后再运行ls命令:#cat list。
        再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中。这次使用管道符号>>进行重定向:#ls –l >> list。
        查看文件list的内容,可以看到用>>进行重定向是把新的输出内容附加在文件的末尾,注意其中两行list文件的信息中文件大小的区别:cat list。
        重复命令#ls –l > list。
        再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小和创建时间的区别,完成课后第一题。
(2)          输入重定向
        使用输入重定向,把上面生成的文件list用mail命令发送给自己:#mail root < list。
        查看新邮件,看看收到的新邮件中其内容是否为list文件中的内容。
(3)          管道
        利用管道和grep命令,在上面建立的文件list中查字符串list:#cat list | grep list。
        利用管道和wc命令,计算文件list中的行数、单词数和字符数:#cat list | wc。
vim编辑器下载与安装4)      查看和修改Shell变量
        用echo命令查看环境变量PATH的值:#echo $PATH。
        设置环境变量PATH的值,把当前目录加入到命令搜索路径中去:#PATH=“$PATH:.”。
        用echo命令查看环境变量PATH的值:#echo $PATH。
        比较前后两次的变化。
2. Vi编辑器
1)        运行编辑器vi。
2)        学习vi常用命令 :
(1) 语法:vi 文件名
对指定的文件执行vi编辑程序。
(2) 参数:
文件名:要编辑的文件名。
以下是可在vi中使用的部分命令:
Esc:按<Esc>键将返回命令模式,允许输入新命令。
r:替换一个字符。
R:无限制地在一行中替换。
i:插入模式。
dd:删除一行。
x:删除一个字符。
$:行尾。
^:行的开始。
:x:写文件并退出vi。
:q!:退出vi,不存文件。
/:允许输入查询模式。
3)        在vi中编写一个abc.c程序,对程序进行编译、连接、运行。具体如下:
[student@enjoy student]$ cd abc
[student@enjoy abc]$ vi abc.c
main()
{
  int i,sum=0;
  for(i=0;i<=100;i++)
  {
    sum=sum+i;
    }
  printf("\n1+2+3+...+99+100=%d\n",sum);
}
[student@enjoy abc]$ gcc -o abc abc.c
[student@enjoy abc]$ ls
abc abc.c
[student@enjoy abc]$ ./abc
1+2+3+...+99+100=5050
[student@enjoy abc]$
[student@enjoy abc]$
4)        从如上内容的基础上总结vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查/替换等命令。
5)        编写一个程序解决“鸡兔同笼”问题。
参考程序:
#include<stdio.h>
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=h
2x+4y=f
四.    思考题:
1.        输出重定向>和>>的区别是什么?
2.        通常命令中的-r和-f参数分别表示什么?
3.        bash比sh有哪些方便用户使用的功能?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。