如何使用 uuidgen 生成通用唯一标识符 (UUID)

介绍

通用唯一标识符 (UUID) 是 128 位数字,它们在创建它们的本地系统上以及过去和未来在其他系统上创建的 UUID 中被认为是唯一的。由于它们的独特性,它们在自动递增的主键可能不足的情况下派上用场。

由于其独特性,UUID 非常适合生成测试数据。需要随机字符串吗?UUID 没问题。电子邮件呢?[email protected]是很棒的。需要一堆随机字符串?UUID 将是独一无二的,使它们在系统中移动时易于追踪。

要从命令行界面生成通用唯一标识符,您可以使用该uuidgen实用程序,

在本教程中,您将使用uuidgen和一些 shell 脚本来生成 UUID 和一些示例数据。

启动互动终端!

生成 UUID

uuidgen命令通常已经安装在类 Unix 操作系统上,例如 Linux 和 macOS。如果不是,您可以通过包管理器安装它。在 Ubuntu 和 Debian 系统上,安装该uuid-runtime软件包。

首先,使用以下apt update命令更新系统的可用软件包列表

  • sudo apt update

接下来uuid-runtime使用apt包管理器安装包:

  • sudo apt install uuid-runtime

要生成单个 UUID,请运行uuidgen不带任何参数命令。开箱即用,uuidgen每次运行时都会生成一个随机 UUID。

在终端中执行以下命令:

  • uuidgen

您将看到类似于以下内容的输出,但您的 UUID 会有所不同:

Output
a522f494-92ce-44e9-b1a3-f891baed8d60

注意:macOS 版本的uuidgen功能与 Linux 版本的功能略有不同,即返回所有大写字母的 UUID。

您还可以生成基于时间和基于哈希的 UUID,但一般来说,大多数情况下随机值就足够了。

您可能希望一次生成多个 UUID,接下来您将对此进行探讨。

生成多个 UUID

要一次生成一堆 UUID,您将利用少量 shell 脚本使用for循环uuidgen多次执行命令。

例如,要生成 10 个 UUID,请执行以下命令:

  • for i in {1..10}; do uuidgen; done

您将看到 10 个 UUID 打印到屏幕上:

Output
834efdb6-6044-4b44-8fcb-560710936f37 e8fa8d54-641a-4d7b-9422-91474d713c62 dff59ac0-4d80-4b96-85c4-14f3a118e7fe 511fea83-9f5f-4606-85ec-3d769da4bf63 3bc82ef7-1138-4f97-945a-08626a42a648 a33abc11-264e-4bbb-82e8-b87226bb4383 2a38839e-3b0d-47f0-9e60-d6b19c0978ad 74dca5e8-c702-4e70-ad16-0a16a64d55fa cd13d088-21cf-4286-ae61-0643d321dd9e 9aec3d5a-a339-4f24-b5a3-8419ac8542f2

你可以换10出你想要的号码。

基于 UUID 的独特性质,您不必担心生成的数据中有任何重复。现在让我们看看以不同的方式使用 UUID。

在测试数据中使用 UUID

如果您想生成每行 2 个 UUID 的逗号分隔值 (CSV) 列表,您可以使用该echo命令在循环的每次迭代期间打印两个 UUID for

执行以下命令:

  • for i in {1..10}; do echo `uuidgen`,`uuidgen`; done

你会得到这个输出:

Output
63b1146f-9e7c-4e1f-82eb-3fe378e203df,ed9d6201-e5b2-4410-9ab1-35c8ca037994 8d3981b6-f112-4f21-ac4b-44791e279b2a,eb63310e-d436-44fa-80c6-65721a300a2b 0eddfe24-1c2e-43a1-b2c2-9d3af6bad837,62ef1782-76a2-4b3c-ac69-1c2d02f65789 29f18766-fc9d-46a4-a1d0-e112738edb30,b6bd303d-1148-4f46-bec7-d7e4cb6e4f03 865bcf30-6a8b-49d6-8b27-8dc51620adf7,972b0959-4270-4683-b19b-360b2605f2d0 0d82d54b-566a-45d1-b3a8-5da1a88bceb3,1c67a802-9647-46b1-bde4-3053699b27f9 778b5415-3e1f-4bc5-a349-499459ac4ab7,7e1a2081-c742-4882-9154-e5d2a4af630c e6cc95bd-3ee1-43cb-bea1-51783de5fc57,5088d3a3-ab67-4684-8761-e48bb14596ec a7453bc0-b5e5-41a3-9ed4-cf4d8e0908a2,957ef50f-7889-4335-9f40-17878e3d20fe 3689362d-588a-409e-bd2c-d6fdaa361574,9ffe7c8d-9afb-4b24-a5b7-b29a06f6fac7

使用相同的方法,您可以通过对echo语句进行小幅调整来生成看起来像电子邮件地址的数据

  • for i in {1..10}; do echo `uuidgen`@`uuidgen`.com; done

您将收到此输出:

Output
7dd44050-9df4-43aa-b3b4-3b47eff8fc31@3052e93c-95d1-40f5-b468-3d4e06dd208b.com cca71187-f666-46ff-81c6-eb3b72ff6972@30f4c9a8-712e-4f4c-ad3a-4b55ef85eee0.com 6ff086ad-493d-4b3a-8ed1-970239d7125b@8302d772-4deb-43d1-8901-0a3b4f747b55.com f9813daa-6a8e-4543-8708-d42cefdda20a@d586854c-7df9-4046-89f8-51f960973afb.com a7e9e43b-d2b1-4415-b73d-ff72b713e45f@a7c56c2c-df25-44bc-872d-a893f750b54d.com 0d1d13fe-777d-44d8-b1b2-302ca1e48aa1@7c2d8e6a-fa8b-4fa3-a0ef-8360aa42e730.com f85d0772-22d2-43d0-8d71-4e6714c2bb20@fb4f74fe-f9f9-4e86-b31d-f148344a97e0.com f46eb868-0a99-4291-98f2-19d95f1e9fbb@37ef072d-c515-4145-8b8a-edf32ec18bd2.com eaa4a63e-2646-427a-a892-f8027c2791ed@33daf102-2b5b-4070-88c5-261fe5d96cfa.com d75f6720-b249-4395-bcc7-9ffe2b67cabb@457b04b4-3c15-4b77-aae2-9afd6803bcfe.com

这些不是您可以验证的真实电子邮件地址,但您可以再次调整输出,并将第二个交换uuidgen为一次性电子邮件地址域,例如 [mailinator.com]( https://mailinator.com ],您不仅会有一个看起来很逼真的数据列表,而且它还会是一个你可以在测试中实际使用或监控的电子邮件地址列表。尝试以下命令:

  • for i in {1..10}; do echo `uuidgen`@mailinator.com; done

这次你会看到这样的输出:

Output
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]

最后,将此命令的输出保存到文件中,您可以附加> /path/to/some/file到管道输出:

  • for i in {1..10}; do echo `uuidgen`@mailinator.com; done > /tmp/emails.txt

然后使用cat命令查看刚刚创建的文件:

  • cat /tmp/emails.txt

该文件显示在您的屏幕上:

Output
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]

您可以使用相同的方法将本教程中的任何其他示例保存到文件中。

结论

通用唯一标识符比随机数更可靠。它们的独特性使它们非常强大。结合命令行界面上的一些轻量级 shell 脚本,您能够生成有用的数据,而无需加载您最喜欢的编程语言的包存储库。

下次您需要 UUID 时,省去搜索“在线 UUID 生成器”并使用系统uuidgen命令。要了解更多关于你的系统的具体实现方式uuidgen,类型man uuidgen的终端,查看它的文档..

觉得文章有用?

点个广告表达一下你的爱意吧 !😁