Linux Shell经典案例一
2019-06-29 本文已影响0人
大叔David
一、使用for循环在/david目录下批量创建10个文件,名称依次为:
daivd-1.html
daivd-2.html
daivd-3.html
……
daivd-10.html
[root@web01 scripts]# vim david01.sh
#!/bin/sh
DIR=/david
[ ! -d $DIR ] && mkdir -p $DIR
for n in `seq 10`
do
touch $DIR/david-$n.html
done
二、用for循环实现将以上文件名中的david全部改成linux,并且扩展名改成大写。
方法1:
[root@web01 scripts]# cat david02_1.sh
#!/bin/sh
cd /david
for file in `ls`
do
mv $file `echo $file | awk -F [-.] '{print "linux-" $2".HTML"}'`
done
方法2:
[root@web01 scripts]# cat david02_2.sh
#!/bin/sh
cd /david
for n in `seq 10`
do
mv david-${n}.html linux-${n}.HTML
done
方法3:
[root@web01 david]# rename "david" "linux" *
[root@web01 david]# rename ".html" ".HTML" *
(听网上讲rename有正则表达式可以把以上二步合成一步,但一直没有找到方法,如网友请告知)
方法4:
[root@web01 david]# ls | awk -F [-.] '{print "mv " $0,"linux-"$2".HTML"}'|bash
三、批量创建10个系统账号david01-david10并设置密码(密码不能相同为随机8位字符串)。
[root@web01 scripts]# cat david03.sh
#!/bin/sh
. /etc/init.d/functions
[ $UID -ne 0 ]&&{
echo "请必须使用root用户操作。"
exit 1
}
DIR=/david
[ ! -d $DIR ] && mkdir -p $DIR
for n in `seq -w 10`
do
Pass="`echo $RANDOM|md5sum|cut -c 2-9`"
useradd david$n &>/dev/null && \
echo $Pass|passwd --stdin david$n &>/dev/null
if [ $? -eq 0 ];then
action "useradd david$n" /bin/true
else
action "useradd david$n" /bin/false
fi
echo -e "david$n\t$Pass" >> $DIR/user.txt
done
四:使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:coaolvajcq_oldboy.html
[root@web01 scripts]# cat david04.sh
#!/bin/sh
DIR=/server/scripts/oldboy/
[ ! -f $DIR ]&& `mkdir -p $DIR`
cd /server/scripts/oldboy/
for n in `seq 10`
do
touch `echo $RANDOM|md5sum|cut -c 1-10`_oldboy.html
done
五、将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写。
方法1:
[root@web01 scripts]# cat david05_1.sh
#!/bin/sh
cd /server/scripts/oldboy/
for n in `ls`
do
mv $n `echo $n | sed 's#boy.html#gilr.HTML#g'`
done
方法2:
[root@web01 scripts]# cat david05_2.sh
#!/bin/sh
cd /server/scripts/oldboy/
for n in `ls`
do
rename "boy.html" "girl.HTML" $n
done