今天是来到的苏嵌的第二天,虽然只有两天但是最大的感觉是累,强度很大。和考研那段时间相比有过之而无不及。累和压力主要是来自两方面。一方面是上的内容主要是Linux,在这一块身为一个自动化的学生,完全是没有接触过。在加上老师一天之内介绍Linux的内容较多,强行接受起来的确压力很大,虽然也上下来了,但是基本是前面介绍到后面就不知道是啥了。所以在之后的几天要多回顾多温习,第二方面就是 上课的强度高,一天的高强度的课程内容能保持一个高效的效率对我来说是个巨大的挑战。并且今天上午发生的一件事真的很想特别的吐槽一下,由于涉及到shell的编程 要下一个xshell的运行程序。但是在电脑上无法运行xshell的程序缺少相应的库文件,自己去上百度找到相对应的库文件下载安装,由于老师上课的一些特殊要求,需要关闭防火墙。在安装库文件的时候一些流氓软件就悄悄的安装到电脑上了,最后甚至造成了cpu占有率高达98,造成死机的情况。瞬间心情跌倒了谷底,我这个人比较爱惜电脑,不喜欢装什么乱七八糟的软件,之后花了半天时间进行卸载, 一想到这些流氓软件有卸载残余,搞的整个人都不好了 。今天上课的内容是对shell编程指令的一些简单介绍。包括什么是shell脚本,如何创建和执行?注意事项,以及变量和变量表达式,控制流程等等。介绍了很多内容,也介绍了很多的基本的VIM指令。自己收获很多,毕竟这一块的知识是自己以前从未接触过的。
练习:
Linux 常用命令考查:
1.cd ~: 进入用户主目录 2.cd - :返回进入此目录之前的所在目录 3:将temp目录压缩:tar -czvf temp.gz
4:查看主机名:hostname. 5:diff命令:比较给定的两个文件的不同 6.查看网络连接:ifconfig 7: 列举Linux系统进程:chkonfig -list 9:查看手册:man passwd 10:设置主机IP为192.168.1.1:ifconfig eth0 192.168.1
vim命令考查:
1.打开一个文件hello.c: vim hello.c 2:怎么对hello.c文件进行编辑:vi hello.c 3:怎么查找hello这个单词:/hello
4:怎么删除第4行:4Gdd 5.怎么复制第5行:5GY 6:怎么粘贴刚才复制的第5行:p 7:如何跳到文件末尾:G 8:怎么样让文档显示行号:set nu (撤销行号:set nonu) 9:怎么不保存文件而退出:ESC:q! 10:怎么保存文件并退出:Esc:wq.
shell编程:
题目:
1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录;
2. 进入 vitest 这个目录当中;
3. 将 /etc/man.config 拷贝到本目录底下
4. 使用 vim 开启本目录下的 man.config 这个档案;
5. 在 vim 中设定一下行号;
6. 移动到第 58 行,向右移动 40 个字符,请问您看到的双引号内是什么目录?
7. 移动到第一行,并且向下搜寻一下“bzip2”这个字符串,请问他在第几行?
8. 接着下来,我要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何下达指令?
9. 修改完之后,突然反悔了,要全部复原,有哪些方法?
10. 我要复制 51 到 60 行这十行的内容,并且贴到最后一行之后;
11. 删除 11 到 30 行之间的 20 行;
12. 将这个文件另存成一个 man.test.config 的文件;
13. 到第 29 行,并且删除 15 个字符;
14. 储存后离开
解答:
1. mkdir /tmp/vitest
2. cd /tmp/vitest
3. cp /etc/man.config .
4. vi man.config
5. :set nu
6. 先按下 58G 再按下 40→ 会看到 /dir/bin/foo 这个字样在双引号内;
7. 先执行 1G 或 gg 后,直接输入 /bzip2
8. 直接执行 :50,100s/man/MAN/gc 即可
9. (1)简单的方法可以一直按 u 恢复到原始状态,(2)使用不储存离开 :q! 之后,再重新读取一次该文件;
10. 51G 然后再 10yy 之后按下 G 到最后一行,再p粘贴10行
11. 11G 之后,再给他 20dd即可删除 20 行了;
12. :w man.test.config
13. 29G 之后,再给他 15x 即可删除 15 个字符;
14. :wq!
二.小程序编程
1.编写一个名为iffile程序,它执行时判断/bin目录下date文件是否存在?
答: #! /bin/sh -
fname=/bin/date
if (test –f “$fname”) then
echo “exist”
fi
说明:
在shell程序中经常需要判断所处理的文件是否存在。本程序采用if语句的简单格式测试date文件,如果存在,则显示相关信 息,否则退出if语句。
2.编写一个名为greet的问候程序,执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨,中午到下午六点为下午,下午六点到半夜为晚上
#! /bin/sh -
hour=`date|cut –c 10-11`
if test “$hour” –ge 0 –a “$hour” –lt 12; then
echo “Good morning!”
elif test “$hour” –ge 12 –a “$hour” –le 18; then
echo “Good afternoon!”
else
echo “Good evening!”
fi
说明:
第一个有效语句是将命令执行的结果赋给hour变量,所以用反向单引号。
用cut命令从date命令的输出中切割出“小时”信息;这里-c 10-11选项表示只切割10到11列。
这个程序使用了if连用格式,也可以使用if完整格式的嵌套形式。
3.编写一个名为ifuser的程序,它执行时带用户名作为命令行参数,判断该用户是否已经在系统中登录,并给出相关信息。
#! /bin/sh -
if test $# -ne 1 then
echo "Incorrect number of arguments"
echo "Usage: ifuser username"
else
user=$1
if who | grep –q $user ; then
echo $1 "user is logged on."
exit 0
else
echo $1 "user is not logged on."
exit 1
fi
fi
说明:
(1)由于who | grep $user不是表达式而是命令组合,所以不需要test语句测试;如果命令组合执行成功,即找到指定的用户名则返回码为0;否则为非0。
(2)在这个程序中使用了grep字符串搜索命令和“|”管道命令
(3)用grep 命令–q选项来禁止显示搜索到的信息。
(4)还使用了exit命令,以终止shell程序的执行。exit 0表示程序终止后返回0值,而exit 1表示程序终止后返回非0的值。