面试题1:批量生成随机字符文件名
题目:使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串_oldboy
#!/bin/bash #定义共用变量 path=/root/oldboy #短路||前面为false后面执行 -p递归创建多级目录 [ -d "$path" ]||mkdir -p $path #循环10次 for n in `seq 10` do #产生10个小写字母 random=$(openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 1-10) #创建文件 touch $path/${random}_oldboy.html done
面试题2:批量改名
题目:上题所得文件名中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写
#!/bin/bash #定义变量 filename=_oldgirl.HTML dirname=/root/oldboy #不能进入待改文件目录就退出 cd $dirname||exit 1 #循环当前目录下的文件 for n in `ls` do #n就是每个文件的名字 name=$(echo ${n}|awk -F '_' '{print $1}') #剪切 mv $n $name$filename done
借助rename命令实现重命名
rename oldboy.html oldgirl.HTML *.html
面试题3:批量创建特殊要求用户
题目:批量创建10个系统账号oldboy01-oldboy10并设置密码(密码为随机数,要求是字符和数字等的混合)。
#!/bin/bash user="oldboy" logfile=/root/logs/user.log for n in `seq -w 10` do #创建用户 useradd $user$n #设置密码 pass="`echo "$RANDOM"|md5sum|cut -c 1-8`" echo "$pass"|passwd --stdin $user$n #记录密码 echo -e "user:$user$n\tpasswd:$pass" >> $logfile done