前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一种简单的使用Linux shell生成UUID的方法

一种简单的使用Linux shell生成UUID的方法

原创
作者头像
熊爸爸科技工坊
修改2022-01-07 10:42:59
2.7K0
修改2022-01-07 10:42:59
举报
文章被收录于专栏:嵌入式开发嵌入式开发

Linux本身有一个生成随机数的设备,也就是/dev/random或者/dev/urandom。通过读取这个随机数设备我们就不需要安装任何的加密库就能得到随机数了,也能用它生成UUID字符串。

这里我所说的UUID是一种类似的随机字符串,并没有完全按照UUID的标准实现,但是只要修改一下也是可以轻松实现的。

生成UUID

先来看看生成所使用的shell命令

代码语言:txt
复制
cat /dev/urandom | od -x | head -1 | awk '{print $2$3"-"$4$5"-"$6$7"-"$8$9}'

命令解释

该命令通过管道连接,分别使用了cat,od,headawk四个命令合作完成

cat 命令是用来读取`/dev/urandom'设备数据,读取出来的内容是二进制的数据格式,因此我们看到结果就是满屏的乱码

catcat 读取 /dev/urandom的输出结果
catcat 读取 /dev/urandom的输出结果

od 命令是将读取的二进制数据转换成其他进制的数据格式,这里使用od -x是输出16进制的数据格式

od输出的16进制数据格式
od输出的16进制数据格式

通过od转换后会发现数据是一行一行的输出的,每一行有9列,除了第一列,其他每一列都是由4个字符组成的,当然了因为是16进制的关系,字符最大也就是f了。

head 命令是从od输出的数据中读取前面一部分数据,head -1就是只需要读取第一行数据内容就行,也可以改成读取其他行,不过没有什么意义,毕竟是随机数。

读取第一行随机数数据
读取第一行随机数数据

awk 命令就是将读取到随机数按照我们预设的格式输出,这里我是仿造UUID的数据格式分成4组,每组之间用-连接,这里我不使用$1也就是第一列作为随机数,那是因为第一列是序号,读取第一行的时候序号总是0000000,因此完全没法当作随机数使用。

生成格式化UUID字符串
生成格式化UUID字符串

总结

这行命令能够在mac OSLinux系统上运行,不同平台之间可能输出格式有所不同,只要awk命令部分稍加修改就可以。即使在嵌入式系统中也能正常使用,因为这四个命令默认是busybox自带的。对于空间紧张的嵌入式系统来说,这个方法既简单又安全,几乎不占用额外的存储空间。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成UUID
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档