如何在 shell 脚本中生成一个 uuid

How to generate a uuid in shell script

有没有办法在shell脚本中生成uuid,类似于$RANDOM,我可以使用$uuidgen获取uuid,还是需要安装任何包才能在[=中生成uuid 14=] 脚本

#!/bin/bash
echo $RANDOM
echo $uuid

你试过了吗

uuidgen

已安装 out-of-the-box 在 MacOS 等 freeBSD 系统上。

在 Fedora、CentOS 和 RHEL 上,从 util-linux 包中获取它(CentOS6 在 util-linux-ng 中有它)。在 debian 上,使用 sudo apt-get install uuid-runtime 获取它。在其他 linux 系统上,尝试寻找 e2fsprogs 软件包。

看看这个,我有完全相同的问题,我已经通过这种方式解决了,忽略代码在做什么,只关注我正在使用 uuidgen 的部分。

#!/bin/bash
#   Create 100000 small files between 1K and 100K and stored in  directory
#   sh create_small_files.sh 1000 small_3

MAX=
DIR=

for i in $(seq $MAX)
do
   for y in $(shuf -i 1-100 -n 100)
   do
      name=$(uuidgen)
      dd if=/dev/urandom of=.//$name bs=${y}k count=1
   done
done

我使用的是 fedora 29,因此为了使用此命令,您需要安装它。

util-linux-2.32.1-1.fc29.x86_64 : A collection of basic system utilities
Repo        : fedora
Matched from:
Filename    : /usr/bin/uuidgen

干杯。

来自这篇相当全面的文章。
http://0pointer.de/blog/projects/ids.html
(顺便说一句,那是 Lennart Poettering 的博客)

Linux 提供了一个内核接口来按需生成 UUID,通过读取 /proc/sys/kernel/random/uuid

这是一个非常简单的生成UUID的界面。也就是说,UUID 背后的逻辑不必要地复杂,通常从 /dev/urandom

中简单地读取 16 个字节左右是更好的选择