shell编程之shell基础

shell基础


shell编程之shell基础

一、生成加密码

1、centos7:grub2

在物理机上任何人都可以修改密码,是极其不安全的,在centos7中grub2可以实现grub菜单加密,这个先不说
grub2-mkpasswd-pbkdf2然后回车输入密码
shell编程之shell基础

2、centos6:grub-md5

grub-md5-crypt和centos7一样,生成的是由MD5加密方式的密码

二、生成自然数

1、echo { }

对于终端如果想生成自然数。可以使用 echo {00..19}
对于for循环来说也可以使用 { }如下例

for i in {10..20}
do 
	echo $i
done


进阶版:接受用户输入的数字进行遍历

read -p "请输入任何数" one
read -p "请输入任何数" two
for i in `eval echo {$one..$two}`
do 
	echo $i
done

a、 知识点

  • 对于要解析里面的变量需要多次扫描,则得需要用eval,由于是一个语句则要给eval加反引号
  • read -p 是用来接受用户输入的语句,后面跟变量名
  • echo -e :是用来解析\t \n等等,不受强引弱引用的影响

b、位置参数

位置参数根据字面意思就是根据位置来取数字,用set来设置
shell编程之shell基础
那么如何来取对应位置的参数呢?没错echo来取1位置的就是echo $1 对应上图取出来的数字就是11
根据上图的一些特殊情况

echo $# 定义的位置参数的个数
echo \$$# $4(由于$#解析出来的是4,则再加上前面的$就是$4)
eval echo $$# 14($#解析出来的是4,则再加上前面的$就是$4,再加上exal的在次扫描$4对应的位置参数是14)

2、seq

a、格式

seq表示从某一个数到另一个数格式如下
seq 首数 增量 尾数
shell编程之shell基础

b、参数

  • -f 用frintf的浮点格式:-f%5g:表示占5个字符-f%-0g:表示左对齐-fabc%5g:表示再前面加abc之后占5个字符-f%05g:表示前面如果只空的用 0来补齐
    shell编程之shell基础
  • -w:按最高位前补0
    shell编程之shell基础
  • -s:指定分隔符号
    shell编程之shell基础
    上图是以空格分割,那么如果想要以tab来分割改如何呢?
seq  -s  "`echo -e "\t"`"
对于分隔符用什么来引用,其实单引双引都可以,只要里面没有要解析的命令就可以用单引,如上题里面由要解析的命令得用弱引

3、生成随机自然数

对于如果想生成一个随机参数的话可以用linux的一个内部系统变量$RANDOM,其范围是0-32767,如果想要生成自己指定范围的自然数,可以写一个shell脚本对其进行改造
shell编程之shell基础

4、awk生成

awk 'BEGIN{srand();print rand()*1000000}':可以根据要的数的大小来x1000000

5、opensel rand

通过加密来生成随机数和字符串,当然如果知道数字的话还可以通过加密来取数字
openssl rand -base64 xxx:加密xxx生成随机字符串
openssl rand -base64 xxx |cksum:生成数字
openssl rand -base64 xxx |cksum|cut -c 1-8:取前8个
openssl rand -base64 xxx |md5sum |cut -c 1-5:取1-5个字符串
shell编程之shell基础

6、从文件中取来加密成数字

可以从文件/dev/urandom里面来取
cat /dev/urandom |head -n 10 |cksum |cut -c 1-8
shell编程之shell基础

7读取Linux的uuid码加密生成数字

UUID码全称是通用唯一识别码 (Universally Unique Identifier, UUID),UUID格式是:包含32个16进制数字,以“-”连接号分为五段,形式为8-4-4-4-12的32个字符。linux的uuid码也是有内核提供的,在/proc/sys/kernel/random/uuid这个文件内。cat/proc/sys/kernel/random/uuid每次获取到的数据都会不同。和上一个基本一样,不过是取的文件不一样
cat /proc/sys/kernel/random/uuid |cksum|cut -f1 -d " "
shell编程之shell基础

8、从元素池中抽取数字

通过定义元素池,编写一个shell脚本来实现随机数的生成

三、随机生成uuid

1、cat /proc/sys/kernel/random/uuid可以从这个文件中获取随机的uuid
2、输入uuidgen来获取
shell编程之shell基础

四、生成MAC地址

echo "00:60:2F$(dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"')"
shell编程之shell基础

五、命令排序

  • 不具有逻辑排序;只要前后有就会执行
  • 具有逻辑排序&& ||
  • &&前一个不对,后一个不执行
  • ||前一个不论对不对都会执行
  • & 将命令置于后台执行
  • { }顺序输出 例:touch file{00…10}会依次建立10个文件,cp xxx {,.bak} 会将文件xxx赋值成xxx.bak文件
上一篇:Mysql主键问题:类型问题int、bigint,主键选择问题:auto_increment自增、UUID、雪花算法构造全局自增id


下一篇:mysql8 sql优化相关(持续更新...)