LINUX探路-shell脚本编程练习

    xiaoxiao2022-07-12  160

    1、创建用户: 批量创建用户,用户名为:班级+学号+昵称;每个班为一个组群,能够自动删除所创建的用户,每成功创建或删除一个用户,在屏幕上显示用户名 #!/bin/bash echo "start input username" grouppath=/etc/group grouplist=() userlist=() groupcount=1 for ((i=1;i<3;i=i+1)) do read -p "input classname " classname read -p "input username " username echo "uname is ${classname}_${username}" grep ${classname} ${grouppath} > /dev/null if [ $? != 0 ]; then echo "groupadd ${classname}" groupadd ${classname} grouplist[${groupcount}]=${classname} groupcount=$[${groupcount} + 1] fi echo "useradd ${classname}_${username}" useradd -G ${classname} ${classname}_${username}  userlist[i]=${classname}_${username} done

    echo "groupcount ${groupcount}" echo "grouplist ${grouplist[1]} ${grouplist[2]}" echo "userlist ${userlist[1]} ${userlist[2]}"

    for ((i=1;i<3;i=i+1)) do echo "userdel ${userlist[${i}]}" userdel ${userlist[${i}]} rm -rf /home/${userlist[${i}]} rm -rf /var/spool/mail/${userlist[${i}]} done for ((i=1;i<${groupcount};i=i+1)) do echo "groupdel ${grouplist[${i}]}" groupdel ${grouplist[${i}]} done

    2、批量创建10个目录dir$1-10 每个目录下创建10个文件:dir$+file$1-10 然后修改所有文件权限为755 等待输入一个数1-10 将对应dir$目录下的所有文件增加扩展名bak,并将目录下的所有名字写到./dir$bak下,删除所有包含该数字的目录和文件 echo "" > a.out 覆盖 >> 追加 #!/bin/bash echo "hanle file begin" for i in {1..10} do mkdir "dir${i}" for j in {1..10} do touch "dir${i}/dir${i}file${j}" chmod 755 "dir${i}/dir${i}file${j}" done done read -p "input dir num: " dirnum for filename in dir${dirnum}/* do echo "filename: ${filename}"  mv ${filename} ${filename}.bak touch dir${dirnum}.bak echo ${filename}.bak >> dir.bak done rm -rf ./*${dirnum}* rm -rf ./*/*${dirnum}*

    3、需要写一个工作例程使用crontab 首先写一个脚本放在/root/mine/mine.sh #!/bin/bash datett=`date +%F` touch /root/mine/${datett}.txt 然后修改脚本 chmod 777 /root/mine/mine.sh 写工作排程:crontab -e 00 18 * * * /root/mine/mine.sh -----------每天18:00执行

    4、查看/etc/passwd中包含‘aa'的所有用户并保存到file中 grep "*aa*" /etc/passwd | cut -d: -f1 > file    ----------cut -d: -f1 代表使用:将字符串分割开,并取第一段

    5、逐步读取文件的每一行并进行处理: for line in $(cat data.dat) do  echo "File:${line}" done

    6、统计/home目录下的文件数量 ls /home |wc -l

    最新回复(0)