1:使用shell脚本,测试文件拷贝是否正常,如果正常,则显示“good copy”;如果cp命令并没有拷贝文件myfile到myfile.bak,则打印错误信息。
脚本:
#!/bin/sh
if cp myfile myfile.bak;then
echo"good copy"
else
echo"'$0':error!!could not copy file"
fi
运行结果:
2:设计一个 shell 程序,添加一个新组为 class1,然后添加属于这个组的 30 个用户,用户名的形式为stdxx,其中 xx 从 01 到 30。
脚本:
#!/bin/sh
groupadd class1
for((i=1;i<=30;i++))do
if((i<10));then
username=stu0${i}
else
username=stu${i}
fi
useradd-g class1 $username
echo111|passwd --stdin $username#将密码设为111且不再询问无论如何都使用
done
运行结果:
3:编写 shell 程序,实现自动删除 50 个账号的功能。账号名为stud1 至 stud50。
脚本:
#!/bin/sh
for((i = 1;i<=30;i++))do
if [ $i -lt 10 ] ;then
userdel -r stu0${i} 2> /dev/null
echo "stu0${i} delete successfully"
else
userdel -r stu${i} 2> /dev/null
echo "stu${i} delete successfully"
fi
done
运行结果:
4:设计一个 Shell 程序,在/userdata 目录下建立 50 个目录,即 user1~user50,并设
置每个目录的权限,其中其他用户的权限为:读100(4);文件所有者的权限为:读、写、执行(7);文件所有者所在组的权限为:读、执行101(5)。754
脚本:
#!/bin/sh
for((i = 1;i<=50;i++))do
if [ -e /userdata ] ;then
mkdir -p -m 754 /userdata/user$i
echo "user$i createsuccssfully"
else
mkdir /userdata
mkdir -p -m 754 /userdata/user$i
echo "user$i createsuccssfully"
fi
done
运行结果:
扩展提高:用 shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下?
参考答案:
#!/bin/bash
directory=/dev
for file in anaconda-ks.cfg install.log install.log.syslog
do
if [ -f $file ]
then
cp $file$directory/$file.bak
echo" HI, $LOGNAME $file is backed up already in $directory !!"
fi
done