Linux Shell 生成随机数和随机字符串的方法示例

下面我将详细讲解一下关于“Linux Shell 生成随机数和随机字符串的方法”的完整攻略。

生成随机数

有时我们需要生成随机数,可以使用 Shell 内置的 $RANDOM 变量。它可以返回一个介于0~32767之间的随机数。

下面是一个 $RANDOM 的示例:

#!/bin/bash
for i in {1..10}
do
    echo "第 $i 个随机数: $RANDOM"
done

以上脚本可以打印10个随机数。

生成随机字符串

我们也可以通过 Shell 来生成随机字符串。以下是3种方法:

方法1:用 /dev/urandom 和 tr 命令

/dev/urandom 是一个Linux下生成随机数的接口,我们可以通过它来产生随机字符串。

#!/bin/bash
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 20 ; echo ''

其中:

  • head /dev/urandom 产生无限随机字符流
  • tr -dc A-Za-z0-9 对字符流进行过滤,剔除非字母和数字字符
  • head -c 20 输出20个字符
  • echo '' 跳行输出,否则输出在同一行。

方法2:用日期和散列函数

#!/bin/bash
date +%s%N | md5sum | head -c 20 ; echo ''

其中:

  • date +%s%N 输出从1970年1月1日至今的纳秒数时间戳
  • md5sum 优秀的散列函数,将产生相同输入时必定产生相同输出,相同输出对应相同输入
  • head -c 20 输出所有md5字符串的前20位

方法3:用 UUID

UUID 是一个128位的唯一标识符,它在 Linux 中是可以随时使用的。

#!/bin/bash
cat /proc/sys/kernel/random/uuid |  cut -d '-' -f 1 | tr -d '\n' ; echo ''

其中:

  • cat /proc/sys/kernel/random/uuid 产生唯一标识符
  • cut -d '-' -f 1 取出第一部分
  • tr -d '\n' 去掉所有换行符

以上三种方法都可以在 Bash Shell 中用来产生随机字符串。

希望这篇攻略能帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux Shell 生成随机数和随机字符串的方法示例 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • sql2008 附加数据库时出现错误5123提示的解决方法

    下面是详细讲解《sql2008 附加数据库时出现错误5123提示的解决方法》的完整攻略。 1. 问题描述 在对 SQL Server 2008 数据库进行附加操作时,可能会遇到以下错误提示: Msg 5123, Level 16, State 1, Line 1CREATE FILE encountered operating system error 5(…

    database 2023年5月19日
    00
  • Linux系统中Mysql的安装备份与密码恢复

    Linux系统中MySQL的安装、备份与密码恢复攻略 1. 安装MySQL 首先需要在Linux系统上安装MySQL数据库。在Ubuntu操作系统下,可以通过以下命令进行安装: sudo apt-get update sudo apt-get install mysql-server 在安装过程中,会弹出一个对话框让你设置root用户的密码。设置一个强密码,…

    database 2023年5月22日
    00
  • mysql中key 、primary key 、unique key 与index区别

    CREATE TABLE pre_forum_post ( pid int(10) unsigned NOT NULL COMMENT ‘帖子id’, fid mediumint(8) unsigned NOT NULL default ‘0’ COMMENT ‘论坛id’, tid mediumint(8) unsigned NOT NULL defaul…

    MySQL 2023年4月13日
    00
  • .NET 6开发TodoList应用引入数据存储

    针对““.NET 6开发TodoList应用引入数据存储”的完整攻略,我提供如下解答,共分为以下几个部分: 概述 引入EF Core 建立数据模型 添加CRUD操作 示例说明 1. 概述 在.NET 6开发TodoList应用时,我们常常需要引入数据存储,这样才可以实现TodoList应用的功能。一般情况下,我们会选择使用EF Core来实现数据存储。 本文…

    database 2023年5月22日
    00
  • 使用FileZilla连接时超时无法连接到服务器

    使用FileZilla连接时超时无法连接到服务器的问题通常是由于以下原因引起的: 1.服务器的FTP服务未启动或出现故障。 2.网络连接不稳定,导致连接超时。 3.防火墙过于严格,阻止了FTP连接。 解决方法如下: 第一步:确认FTP服务是否正常 确保服务器的FTP服务已启动并正常运行。可以通过telnet连接来测试FTP服务是否正常。打开cmd,输入“te…

    database 2023年5月22日
    00
  • MySQL慢查询如何定位详解

    MySQL慢查询是指执行时间超过阈值的查询语句。慢查询可能会导致数据库性能下降,因此需要及时定位并优化这些查询语句。本文将详细讲解MySQL慢查询如何定位的完整攻略,帮助读者轻松地找出慢查询语句。 1. 配置慢查询日志 要定位MySQL慢查询,首先需要进行一些配置。我们需要在MySQL中开启慢查询日志,记录下执行时间超过指定阈值的查询语句。在MySQL的配置…

    database 2023年5月22日
    00
  • MySQL sql_mode的使用详解

    我们来讲解一下MySQL sql_mode的使用。 什么是MySQL sql_mode MySQL sql_mode 是 MySQL 提供的一种配置,用于控制 MySQL 在执行 SQL 语句时的行为。它定义了一组规则,来判断 SQL 语句是否合法,以及如何处理 SQL 语句中的错误。 MySQL sql_mode 常见的取值 1. STRICT_TRANS…

    database 2023年5月18日
    00
  • SQL 排序时对Null值的处理

    在 SQL 中排序时对 NULL 值的处理是一个很常见的问题。下面是几种处理 NULL 值排序的方法: 1. 升序和降序排序 NULL 值 可以使用 ORDER BY 子句来排序 NULL 值。默认情况下,升序排序(ASC)将 NULL 值放在排序结果集的最后,而降序排序(DESC)将 NULL 值放在排序结果集的最前面。 示例 1:升序排序 NULL 值 …

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部