Shell必会30道题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell必会30道题相关的知识,希望对你有一定的参考价值。
1、批量生成随机字符文件名
使用for 循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下:
[[email protected] ~]# ls /oldboy/ aebecfecbd_oldboy.html baaaafbcda_oldboy.html ccdeadaebe_oldboy.html ceefcaaffc_oldboy.html deacbedcdb_oldboy.html afcbdeeafc_oldboy.html bbbceadeef_oldboy.html cdedcfadec_oldboy.html dcdbedaace_oldboy.html ecfebeaaaf_oldboy.html
解答:
[[email protected] oldboy]# vim /server/scripts/ti1.sh
#!/bin/bash Path=/oldboy [ -d "$Path" ] ||mkdir -p $Path for i in `seq 10` do random=$(echo $RANDOM|sha512sum|sed ‘s#[^a-z]##g‘|cut -c 1-10) touch $Path/${random}_oldboy.html done
2、批量改名
将上题中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写。
解答:
[[email protected] oldboy]# vim /server/scripts/ti2.sh #!/bin/bash Filename=oldgirl.HTML Dirname="/oldboy" cd $Dirname for i in `ls` do name=$(echo ${i}|awk -F ‘_‘ ‘{print $1}‘) mv $i ${name}_${Filename} done
3、批量创建特殊要求用户
批量创建10个系统账号oldboy01-oldboy10并设置密码(密码为随机数,要求是字符和数字等的混合)。
不使用for循环做法
seq -w 10|sed ‘s#.*#useradd oldboy&;a=`echo $RANDOM|sha512sum|cut -c 1-10`;echo $a|passwd --stdin oldboy&;echo oldboy& $a >>/tmp/mima#ge‘
说明:
e 等于bash
-w 平衡宽度用前导零填充
使用for循环脚本
[[email protected] scripts]# vim ti3.sh #!/bin/bash Mima=`echo $RANDOM|sha512sum|cut -c 1-10` for i in oldboy{1..10} do useradd $i;echo ${Mima}|passwd --stdin $i touch /tmp/new echo $i ${Mima} >>/tmp/new done
4、扫描网络内存活主机
写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些?
解答:
#!/bin/bash for i in 10.0.0.{1..254} do { ping -w 2 -c 2 $i &> /dev/null if [ $? -eq 0 ];then echo "$i is ok" fi }& done
说明:
ping
-c count次数
-w 延期时间
. /etc/init.d/functions 调用这个库
action $i /bin/true 固定格式(把$i以这个库的true格式显示)
action $i /bin/false 固定格式(把$i以这个库的false格式显示)
& Shell的并发检测功能,批量ping,快速返回结果
以上是关于Shell必会30道题的主要内容,如果未能解决你的问题,请参考以下文章
合格linux运维人员必会的30道shell编程面试题及讲解
合格linux运维人员必会的30道shell编程面试题及讲解-08
合格linux运维人员必会的30道shell编程面试题及讲解-09
合格linux运维人员必会的30道shell编程面试题及讲解