1、了解 shell的作用和主要分类。
2、掌握 shell环境变量、管道、输入输出重定向的使用方法。
3、掌握 shell脚本的建立和执行方式。
4、熟悉 shell脚本的基本结构。
5、掌握 shell脚本的调试方法。
1、使用shell变量、位置参数和环境变量。
2、建立shell脚本并执行。
3、使用 shell一般控制结构编写脚本。
4、调试 shell脚本。
1、了解shell变量、位置参数和环境变量
1)输入以下命令,记录输出结果并分析。
#dir=/root
# echo$dir
# echodir
2)输入以下命令,记录输出结果并分析。
# read a b c www hnistcn
# echo "Web :$a.$b.$c"
2、建立简单Shell脚本文件
1)新建Shell脚本文件test_shell_0,编辑内容如下。
cd/var/log
cat /dev/null >messages #/var/log/message:几乎所有的开机系统发生的错误都会在此记录
cat /dev/null >wtmp #/var/log/wtmp:记录登录者讯录,二进制文件echo "Logs cleanedup."
2)采用多种方式运行test_shell_0脚本,记录输出结果并分析功能。
3、简单shell脚本文件改良
1)新建shell脚本test_shell_1,编辑内容如下。
#!/bin/bash
LOG_DIR=/var/logcd$LOG_DIR
cat /dev/null >messages
cat /dev/null > wtmpecho"Logscleanedup."exit
2)运行test_shell_1脚本,与test_shell_0对比,说明各行的作用。在第一行后加上注释,再运行脚本,记录结果并分析。
相关知识点
执行 shell 脚本有以下几种方式
代码如下:
[root@banking tmp]# cd/tmp[root@bankingtmp]#./ceshi.sh
脚本执行成功
2、绝对路径方式
代码如下:
[root@banking tmp]#/tmp/ceshi.sh
脚本执行成功
3、bash命令调用代码如下:
[root@banking /]# bash/tmp/ceshi.sh
脚本执行成功
4、.(空格)相对或绝对方式
代码如下:
[root@banking/]#./tmp/ceshi.sh
几种方式的区别
第一种和第二种没有什么区别,两种方式都需要提前赋予脚本以执行权限。
第三种是把脚本当做bash的调用来处理,所以,脚本不需要有执行权限就可以执行。
前三种方式都是在当前 shell 中打开一个子 shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。
第四种是使脚本内容在当前shell里执行,而不是单独开子shell执行。
开子shell与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell中设置的当前变量,不做特殊通道处理的话,父shell是不可见的。
而在当前shell中执行的话,则所有设置的环境变量都是直接生效可用的。
4、简单shell脚本文件优化
1)新建shell脚本test_shell_2,编辑内容如下。
#!/bin/bashLOG_DIR=/var/logROOT_UID=0LINES=50E_XCD=66E_NOTROOT=67
if["$UID"-ne"$ROOT_UID"]
then
echo "Must be root to run thisscript."
exit $E_NOTROOT
fi
if [ -n "$1" ] #测试是否有命令行参数(非空).
then
lines=$1
else
lines=$LINES# 如果不在命令行中指定,使用默认
fi
cd$LOG_DIR
if [ `pwd` != "$LOG_DIR" ]
then
echo "Can not change to $LOG_DIR."
exit $E_XCD
fi
tail -$lines messages > mesg.temp
mv mesg.temp messages
cat /dev/null > wtmp
echo "Logs cleaned up."
exit 0
2)运行test_shell_2脚本,与test_shell_1对比,说明其新增的功能。
提示:开启ftp工具vsftpd的匿名登陆功能只需要把其配置文件(/etc/vsftpd.conf)中anonymous_enable选项射程YES就可以了。
网卡的ip(试用各种方法但无结果)
网络设备名称
系统内存大小
以下是数据文件dataf.csv,想要把其第2个字段和第4个字段调换位置:
书名,主编,书号,出版社,定价(元),出版时间
大学生心理健康教育实用教程,邓彦,978-7-313-15714-0,北京大学,36.00,2016.8
大学生职业生涯规划,牛荣健,978-7-313-15538-2,上海交大,36.00 ,2016.8
创业管理与实务,蒋键,978-7-313-15633-4,浙江大学,36.00,2016.5
体育与健康,王峰,978-7-313-14769-1,上海交大,35.00,2016.5
创新创业与生涯发展实务指导,陈志国,978-7-313-15819-2,浙江大学,39.50,2016.6
概率论与数理统计(双色版),邓光明,978-7-313-17748-3,上海交大,34.00 ,2017.7
法律逻辑应用教程,吴诚,978-7-313-17952-4,北京大学,34.00,2017.4
(1) 设计shell程序实现该任务
(2) 编写crontab文件实现述任务自调度
创建自己的帐户
注销并登录自己的帐户,创建备份文件
编写 autobackupdata1.sh命令
编写 autobackupdata2.sh命令
编写crontab文件实现对上述任务的自动调度crontab –e
切换到root账户,修改系统时间为上午11:59:50
【提示】获取格式yyyymmdd前期:
1)别获取月进行组合
yyyy=`date +%Y`
mm=`date +%m`
dd=`date +%d`
则$yyyy$mm$dd即文件名前期部
2)直接获取格式yyyymmdd前期
yyyymmdd=`date +%Y%m%d`
则$yyyymmdd即文件名前期部
六、心得体会
此实验为第四次实验,也是迄今为止难度大的实验,之前的那些都是基本操作,但是这节实验就涉及到了一些专业知识,如果不熟悉,进度就很慢,有些命令不熟悉,我就在书上找相关知识点,但是不齐全,再去找百度,才能勉强熟悉知道意思,但是学以致用对我来说还是有难度的,本实验最后一道题我不是很能理解,虽然网上也有例子,但是我尝试一下,有错误但是不知道错在哪,可能是因为没有真正的理解所以才不会学以致用。