目录:

1、批量生成随机字符文件名案例
2、批量改名特殊案例
3、批量创建特殊要求用户案例

1、批量生成随机字符文件名案例(P359)

(1)、利用openssl命令来实现

 #!/bin/bash
#
path=/root/scripts [ -d "$path" ] || mkdir -p $path for n in `seq 10`; do
random=`openssl rand -base64 40 | sed 's@[^a-z]@@g' | cut -c 2-12`
touch $path/${random}_hanshan.html
done

openssl.sh

(2)、利用RANDOM实现

# echo "hanshan$RANDOM" | md5sum | sed 's/[^a-z]//g' | cut -c 2-12

(3)、通过date获得随机数,纯数字

# date +%s%N | md5sum | cut -c 2-12

(4)、利用/dev/urandom配合cksum生成随机数

# head /dev/urandom | cksum | md5sum | cut -c 2-11

(5)、通过UUID生成随机数

# cat /proc/sys/kernel/random/uuid | md5sum | sed 's/[^a-z0-9]//g' | cut -c 2-12

(6)、利用expect命令附带的mkpasswd生成随机数(P258)

# mkpasswd -l 30 -d 5 -c 15 -C 5 -s 5 | md5sum  | sed 's/[^a-z]//g' | cut -c 2-12

2、批量改名特殊案例(P360)

(1)、利用rename命令改名

# rename hanshan.html xiaoheshang.html  *.html    //把字符hanshan改为xiaoheshang

(2)、使用for循环遍历

 #!/bin/bash
#
filename=xiaoheshang.html
dirname=/root/scripts
cd $dirname || exit 1 for n in `ls *.html`; do //列出所有以.html结尾的文件
name=$(echo ${n} | awk -F '_' '{print $1}')
mv $n ${name}_${filename}
done

mv.sh

(3)、使用mv拼接

 #!/bin/bash
#
path=/root/scripts
cd $path || exit
ls *.html | awk -F '_' '{print "mv "$0" "$1"_hanshan.html"}' | bash

3、批量创建特殊要求用户案例(P360)

数字前加0   #echo {01.10}   #seq -w 10

1、批量添加、删除10个用户

 #!/bin/bash
# #定义变量
. /etc/init.d/functions
user="hanshan"
passfile=/tmp/user.log #判断文件是否存在,不存在则创建
[ -f $passfile ] || cd `dirname $passfile` && touch $passfile #添加用户
add() {
for num in `echo {01..10}`; do
pass="`openssl rand -base64 40 | sed 's/[^a-z]//g' | cut -c 4-12`" id $user$num &>/dev/null
if [ $? -eq 0 ]; then
echo "$user$num is exist"
continue
fi useradd $user$num &>/dev/null
echo "$pass" | password --stdin $user$num &>/dev/null
echo -e "user:$user$num\tpasswd:$pass">>$passfile
if [ $? -eq 0 ]; then
action "$user$num is ok" /bin/true
else
action "$user$num is fail" /bin/false
fi
done echo =================================
cat $passfile
} #删除用户
del() {
for num in `echo {01..10}`; do
id $user$num &>/dev/null
if [ $? -ne 0 ]; then
echo "$user$num is not exist"
continue
fi userdel -r $user$num &>/dev/null
if [ $? -eq 0 ]; then
action "$user$num is delete" /bin/true
else
action "$user$num is fail to delete" /bin/false
fi
done
cat /dev/null >$passfile
} #选择
read -p "Please input your choice {add|del|quit}: " choice
case $choice in
add)
add ;;
del)
del ;;
quit)
exit ;;
*)
echo "your choice in {add|del|quit}"
esac

user.sh

2、使用chpasswd,一个批量更新用户口令的工具

#echo "root:123456" | chpasswd

#chpasswd < 密码文件   //给多个用户设置密码,前提是密码文件不能为空

 #!/bin/bash
# . /etc/init.d/functions
user="hanshan"
passfile=/tmp/user.log for num in `seq -w 10`; do
pass=$(echo "hanshan$RANDOM" | md5sum | cut -c 2-10)
useradd $user$num &>/dev/null
echo -e "$user$num:$pass">>$passfile
if [ $? -eq 0 ]; then
action "$user$num is ok" /bin/true
else
action "$user$num is fail" /bin/false
fi
done echo =========================
chpasswd < $passfile
cat $passfile && >$passfile

chpasswd.sh

4、bash for循环打印下面这句话中字母数不大于6的单词

5、单词及字母去重排序(P373)  //参考:

The months of learning in Old Boy education are the few months that I think the time efficient is the most.

I had also studied at other training institutions before, but I was hard to understand what the tutor said and hard to follow.

It was just too much to learn with no outline.

1、按单词出现频率降序排序!

2、按字母出现频率降序排序!

你好

shell案例题的更多相关文章

  1. R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题

    编程教材 <R语言实战·第2版>Robert I. Kabacoff 课程教材<商务与经济统计·原书第13版> (安德森) P48.案例2-1 Pelican 商店 PS C: ...

  2. 史上最全前端面试题(含答案)-A篇

    HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...

  3. Linux计划任务 定时任务 Crond 配置详解 crond计划任务调试 sh -x 详解 JAVA脚本环境变量定义

    一.Crond 是什么?(概述) crontab 是一款linux系统中的定时任务软件用于实现无人值守或后台定期执行及循环执行任务的脚本程序,在企业中使用的非常广泛.     现在开始学习linux计 ...

  4. 33、awk命令详解

    33.1.命令介绍: awk不仅仅是linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告. awk的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,aw ...

  5. HTML5面试题-备

    万不可投机取巧.只求当时过关,非长久之计也!(感谢大神分享) 面试有几点需要注意: 面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑. 题目类型: 技术视野.项目细节.理论知 ...

  6. 2014web面试题

    面试题目会根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑; 类型: 技术视野.项目细节.理论知识型题,算法题,开放性题,案例题. 进行追问,可以确保问到你开始不懂或者面试官开始不懂为止 ...

  7. 史上最全前端面试题(含答案)-B篇

    面试有几点需要注意面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑.题目类型: 技术视野.项目细节.理论知识型题,算法题,开放性题,案例题.进行追问: 可以确保问到你开始不懂 ...

  8. JS(JavaScript)的进一步了解4(更新中···)

    基类Object的子类有 Function  Array  Number  Boolean  String  Date  Math  RegExp 函数 数组 数字 布尔 字符串 日期 算数 正则 都 ...

  9. 此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转

    感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-- ...

随机推荐

  1. restful的特点

    1. 资源(Resources) REST的名称”表现层状态转化”中,省略了主语.”表现层”其实指的是”资源”(Resources)的”表现层”.                所谓”资源”,就是网络 ...

  2. 转:异常处理之ThreadException、unhandledException及多线程异常处理

    转载自:http://www.cnblogs.com/levin9/articles/2319251.html 一:ThreadException和unhandledException的区别 处理未捕 ...

  3. php冒泡排序实现方法,传入几个数字排序后 输出实战例子

    php冒泡排序实现方法,传入几个数字排序后 输出实战例子 算法和数据结构是一个编程工作人员的内功.四种入门级排序算法: 冒泡排序.选择排序.插入排序.快速排序. 一.冒泡排序 原理:对一组数据,比较相 ...

  4. win10 常用设置 桌面出来计算机图标,固定桌面摆好的图标设置方法,电脑设备ID方法

    win10 常用设置 桌面出来计算机图标,固定桌面摆好的图标设置方法 桌面右键-->显示设置-->桌面图标设置 电脑设备ID:xxx查看方法:桌面右键-->显示设置-->关于

  5. 了解Redis过期策略及实现原理

    我们在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期. 当我们设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的. redis设置过期时间 ...

  6. docker local registry server gave HTTP response to HTTPS client

    server gave HTTP response to HTTPS client报错是在insecure_registry中加入了http前缀,如果本地registry不是https的 就不要加任何 ...

  7. GoldenGate 12.3 MA架构介绍系列(4)–Restful API介绍

    OGG 12.3 MA中最大的变化就是使用了restful api,在前面介绍的各个服务模块,其实就是引用restful api开发而来,这些API同时也提供对外的集成接口,详细接口可参考: http ...

  8. scrapy_novel_python

    # _*_ coding:UTF _8_ from bs4 import BeautifulSoup import requests,sys class downloader(object): def ...

  9. EL和jstl(概念和使用方法)

    概念: 1 .  JSP 标签 是用来替换java代码的技术,容器遇到标签后会将其转换成java代码,jsp标签类似于开始标记.属性.结束标记.标签体. EL表达式是一套简单的运算规则,用于给jsp标 ...

  10. 给PXC集群加密

    MySQL的复制时明文的,不管是集群的复制还是IST/SST,直接通过抓包就可以抓取数据. 生成证书 直接使用 mysql_ssl_rsa_setup mysql_ssl_rsa_setup --da ...