实验二 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。
4) 查看和修改Shell变量
● 用echo命令查看环境变量PATH的值:#echo $PATH。
● 设置环境变量PATH的值,把当前目录加入到命令搜索路径中去:#PATH=“$PATH:.”。
● 用echo命令查看环境变量PATH的值:#echo $PATH。
● 比较前后两次的变化。
2. Vi编辑器
1) 运行编辑器vi。
2) 学习vi常用命令 :
语法: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("请输入头数和脚数:");
vim编辑器下载与安装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小时内删除。
发表评论