实验三 vi及Shell程序设计
一、实验任务
第一部分 vi
1.请在/tmp目录下建立一个名为vitest的目录;(请书写命令)
[root@localhost /]# mkdir /temp/vistest
2.进入vitest目录;
[root@localhost /]# cd /tmp/vistest
3.将/etc/man.config复制到本目录下;
[root@localhost vistest]# cp /etc/man.config /tmp/vistest
4.使用vi开启本目录下的man.config文件;
[root@localhost vistest]# vi man.config
5.在vi中设定行号;
:set number
6.移动到第58行,向右移动40个字符,请问看到什么目录?
/dir/bin/foo
7.移到第1行,并向下搜寻bzip2字符串,请问它在第几行?
第118行
8.将50到100行之间的man改为MAN,如何实现?
:50,100s/man/MAN/gc
9.修改完后,想全部复原,怎么样实现?
:q!或者一直按u
10.复制65到73行这9行的内容,并粘贴到最后一行之后;
先按“65G”使光标移到65行,再按“9yy”,然后按“G”回到再回到最后一行,按“P”,就可以完成操作。
11.删除21到42行之间的开头为#符号的批注数据,如何实现?
“21G”之后,再用“22dd”即可删除22行
12.将这个文件另存为man.test.config文件;
13.转到第27行,并删除15个字符,结果出现的第一个单词是什么?
14.在第一行新增一行,输入I am a student,怎样实现?
15.保存后退出。
第二部分 Shell程序设计
1.请编写一个Shell脚本,当执行该脚本的时候,该脚本可以显示:1)你目前的身份(用USER)2)你目前所在的目录(用PWD)
2. 请编写一个Shell脚本,该程序可以计算“你还有多少天可以过生日”。
3. 让用户输入一个数字,程序可以由1+2+3...一直累加到用户输入的数字为止。
4. 请编写一个Shell脚本,它的作用是:1)先查看一下/root/test/logical这个名称是否存在;2)若不存在,则建立一个文件,使用touch来建立,建立完成后离开;3)如果存在的话,判断该名称是否为文件,若为文件则将它删除后建立一个目录,目录名为logical,之后离开;4)如果存在的话,判断该名称是否为目录,若为目录则删除此目录。
5. 我们知道/etc/passwd里面以:来分隔,第一栏为账号名称。请编写一个Shell脚本,可以将/etc/passwd的第一栏取出,而且每一栏都以一行字符串The 1 account is “root”
来显示,那个1表示行数。,
6. 请编写一个Shell脚本,利用for循环把当前目录下的所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
#!/bin/bash
# Usage:基本名当前目录路径指定目录路径
# ex:mv.c.sh /home /var
cd $1
for x in $1/*.c
do
mv $x $2
Ls -S $2
done
7. 请编写一个Shell脚本,它把第二个位置参数及其以后的各个位置参数指定的文件复制到第一个位置参数执行的目录中。
#!/bin/bash
while [ "x$2" != "x" ]
do
cp $2 $1
shift done
8. 请编写一个Shell脚本,根据键盘可以循环输入学生成绩(百分制),并显示对应的成绩标准(及格和不及格),按Q键退出,按其他键提示重新输入。
#!/bin/bash
while
echo "Please input your number :"
read var
echo "you number is $var"
do
case $var in
Q) exit;;
q) exit;;
esac
if [ "$var" -ge 60 ]
then echo " This score is passed"
else echo "This score is not passed"
fi
done