资源描述
任务四:
1. 熟悉vi环境
先练习vi的所有命令(参考课本或者后面的vi常用命令列表),然后掌握几个常用的(在上课时已经指出),最后做如下的练习:
1. 请在 /tmp 这个目录下建立一个名为 zhangsan 的目录;
2. 进入 /root 这个目录当中;
3. 将 /etc/man.config 复制到本目录底下;
4. 使用 vi 开启本目录下的 man.config 这个文件;
5. 在 vi 中设定一下行号;
6. 移动到第 58 行,向右移动 40 个字符,请问你看到的双引号内是什么目录?
7. 移动到第一行,并且向下搜寻一下“ bzip2 ”这个字符串,请问他在第几行?
8. 接着下来,我要将 50 到 100 行之间的“小写 man 字符串”改为“大写 MAN 字符串”,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按『y』, 结果会在最后一行出现改变了几个 man 呢?
9. 修改完之后,突然反悔了,要全部复原,有哪些方法?
10. 我要复制 65 到 73 这九行的内容(含有MANPATH_MAP),并且贴到最后一行之后;
11. 21 到 42 行之间的开头为 # 符号的批注数据我不要了,要如何删除?
12. 将这个文件另存成一个 man.test.config 的文件名;
13. 去到第 27 行,并且删除 15 个字符,结果出现的第一个单字是什么?
14. 在第一行新增一行,该行内容输入“I am a student...”;
15. 储存后离开!
整个步骤可以如下显示:
1. 『mkdir /tmp/zhangsan』
2. 『cd /root』
3. 『cp /etc/man.config .』
4. 『vi man.config』
5. 『:set nu』然后你会在画面中看到左侧出现数字即为行号。
6. 先按下『58G』再按下『40→』会看到『/dir/bin/foo』这个字样在双引号内;
7. 先执行『1G』或『gg』后,直接输入『/bzip2』,则会去到第 118 行才对!
8. 直接下达『 :50,100s/man/MAN/gc 』即可!若一直按『y』最终会出现『在 23 行内置换 25 个字符串』的说明。
9. (1)简单的方法可以一直按『 u 』回复到原始状态,(2)使用不储存离开『 :q! 』之后,再重新读取一次该档案;
10. 『65G』然后再『 9yy 』之后最后一行会出现『复制九行』之类的说明字样。按下『 G 』到最后一行,再给他『 p 』贴上九行!
11. 因为 21~42 22 行,因此『 21G 』→『 22dd 』就能删除 22 行,此时你会发现游标所在 21 行的地方变成 MANPATH 开头, 批注的 # 符号那几行都被删除了。
12. 『 :w man.test.config 』,你会发现最后一行出现 "man.test.config" [New].. 的字样。
13. 『27G』之后,再给他『 15x 』即可删除 15 个字符,出现『 you 』的字样;
14. 先『 1G 』去到第一行,然后按下大写的『 O 』便新增一行且在插入模式;开始输入『I am a student...』后, 按下[Esc]回到一般模式等待后续工作;
15. 『:wq』
2. 某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
(1)在下午 4 :50 删除/abc 目录下的全部子目录和全部文件;
(2)从早 8:00~下午 6:00 每小时读取/xyz 目录下 x1 文件中每行第一个域的全部数据加入 到/backup 目录下的 bak01.txt 文件内;
(3)每逢星期一下午 5:50 将/data 目 录 下 的所 有 目 录 和 文 件 归档 并 压 缩 为 文 件 :backup.tar.gz;
(4)在下午 5:55 将 IDE 接口的 CD-ROM 卸载(假设:CD-ROM 的设备名为 hdc);
(5)在早晨 8:00 前开机后启动。
(注:使用计划任务cron来实现)
(1)用vi创建编辑一个名为prgx的crontab文件;
(2)prgx文件的内容:
50 16 * * * rm -r /abc/*
0 8-18/1 * * * cut -f1 /xyz/x1 >;>; /backup/bak01.txt
50 17 * * * tar zcvf backup.tar.gz /data
55 17 * * * umount /dev/hdc
(3)由超级用户登录,用crontab执行 prgx文件中的内容:
root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。
3. 编写一个 Shell 程序,呈现一个菜单,有 0-5 共 6 个命令选项,1 为挂载 U 盘,2 为 卸载 U 盘,3 为显示 U 盘的信息,4 把硬盘中的文件拷贝到 U 盘,5 把 U 盘中的文件拷贝到硬盘 中,选 0 为退出。程序分析:把此程序分成题目中要求的 6 大功能模块,另外加一个菜单显示及选择的主模板。
(1)编辑码
[root@localhost bin]
#vi test19
#!/bin/sh
#mountusb.sh
#退出程序函数
quit()
{
clear
echo “+++++++++++++++++++++++++++++++”
echo “++++ thank you to use,Good bye! ++++ ”
exit 0
}
#加载 U 盘函数
mountusb()
{
clear
#在/mnt 下创建 usb 目录
mkdir /mnt/usb
#查看 U 盘设备名称
/sbin/fdisk –l |grep /dev/sd
echo –e “Please Enter the device name of usb as shown above: \c”
read PARAMETER
mount /dev/$PARAMETER /mnt/usb
}
#卸载 U 盘函数
umountusb()
{
clear
ls -la /mnt/usb
}
#显示 U 盘信息函数
display()
{
clear
umount /mnt/usb
}
#拷贝硬盘文件到 U 盘函数
cpdisktousb()
{
clear
echo –e “Please Enter the filename to be Copide (under Current directory): \c”
read FILE
echo “Copying,please wait!...”
cp $FILE /mnt/usb
}
#拷贝 U 盘函数到硬盘文件
cpusbtodisk()
{
clear
echo -e “Please Enter the filename to be Copide in USB:\c”
read FILE
echo “Copying ,Please wait!...”
cp /mnt/usb/$FILE . #点(.)表示当前路径
}
clear
while true
do
echo “++++++++++++++++++++++++++++++++++++++++++”
echo “++++ LINUX USB MANAGE PROGRAM ++++”
echo “ 1-MOUNT USB ” echo “ 2-UNMOUNT USB ” echo “ 3-DISPLAY USB INFORMATION ” echo “ 4-COPY FILE IN DISK TO USB ” echo “ 5-COPY FILE IN USB TO DISK ” echo “ 0-EXIT ”
echo “++++++++++++++++++++++++++++++++++++++++++++”
echo –e “Please Enter a Choice(0-5):\c”
read CHOICE
case $CHOICE in
1) mountusb
2) unmountusb
3) display
4) cpdisktousb
5) cpusbtodisk
0) quit
*) echo “Invalid Choice!Corrent Choice is (0-5)”
sleep 4
clear;;
esac
done
(2)修改权限
[root@localhost bin]#chmod +x test19
(3)程序执行结果
[root@localhost bin]#./ test19
展开阅读全文