Linux实验四
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四shell 及其程序设计
实验目的
1. 理解shell 操作环境
2. 掌握shell 程序编写方法
二、实验内容
1. 练习、理解下面命令
Alias 答:别名命令,显示所有的别名信息。alias ld= '- ldls. '
答:使用别名命令,添加别名信息。history 20 答:显示最近输入系统的20 条命令!!执行上一次输入的命令var1= ”abcd1234 ”答:将var1 变量赋值echo ${var1:3:4} 答:显示var1[3]-var1[3+4] 的字符echo $HOME 答:显示当前用户主目录的路径信息var2=$HOME 答:将当前用户主目录的路径信息赋给var2 变量echo ”我的主目录是$var2 ”答:双引号下可以进行字符替换,将var2 变量替换为当前用户主目录的信息set —
答:显示系统环境各配置的状态
ls *sh 答:显示当前目录下以“sh ”结尾的文件名称arr1=(long live chair mao) 答:给arr1 数组变量赋值echo ${arr1[1]} 答:显示数组arr1 中下标为 1 的字符串
arr2=('date')
答:将date 命令显示的结果赋给数组变量arr2
echo ${arr2[3]} 答:显示数组变量arr2 中下标为 3 的字符串
[ $? -eq 0 ] || echo
答:”上面命令执行失败。”判断上条命令是否操作失败,若是,则显示“上面命令执行失败”
{ date;pwd;tty;stty; } 答:分步执行四条命令:显示当前日期信息;显示当前操作的目录;显示当前终端设备
的名称;显示当前终端的设置;
2. 编写shell 程序
1) 文件名adds.sh ,实现多个数值相加; (提示:多个数值通过参数提供)
#!/bin/bash
#多个数相加
s=0
for i in $*
do
let s=s+i
done
echo $s
exit 0
2) 文件名cleardirs.sh ,删除指定目录下的文件和子目录;
#!/bin/bash
# 删除指定目录下的文件和子目录
if [ -d $1 ]
then
cd $1 rm -r *
else
echo “$1 目录不存在!”
fi
exit 0
3) 文件名clearfiles.sh ,删除指定目录下的文件及其子目录下的文
提示:件;使用find 命令查找目录下文件)
#!/bin/bash
# 删除指定目录下的文件和子目录下的文件
if [ -d $1 ]
then
rm -f ‘find $1 -type f '
else
echo “$1 目录不存在!”
fi
exit 0
3. 阅读理解程序
120.95.134.193 主机,目录/var/materials 下:
addusers.sh
#!/bin/bash
# 按文件中列出的用户名建立用户帐号
# $1 学生名单,UTF8 编码
# $2 组名
groupadd $2;
# 添加组名$2 cmd=" -g $2 ";
# 将cmd 变量赋值
cat $1 | while read line
# 将$1 学生名单显示的信息逐行读出do
u=($line);
# 将一行的字符赋值给u 变量useradd $cmd -c "${u[1]},${u[2]}" ${u[0]} ;
#添加用户时同时加入用户描述及分组信息
[ $? -eq 0 ] && {
echo 123456 | passwd --stdin ${u[0]} ;
echo 创建${u[0]} 用户成功;
}
# 判断上一条命令是否执行成功,若成功则为用户初始化密
并显示创建用户码,成功
done > addusers.log
# 循环结束后保存到addusers.log 文件中
exit 0
#退出
delusers.sh
#!/bin/bash
# 删除文件中列出的用户
cat $1 | while read line
#将文件$1 打开并逐行读出
Do
#进入循环
u=($line)
# 将行信息赋给u 变量
userdel -r ${u[0]}
#删除用户,并把用户的信息一并删除掉
done > delusers.log
# 循环结束后,将修改的信息保存到delusers.log 日志文件中exit 0 #退出