如何在 Bash 中生成随机字符串 ?

随机字符串是随机生成的字符序列,而不是由固定的模式或预先决定的序列。随机字符串通常用作密码、密钥或标识符。Bash 中生成随机字符串非常简单和便利,Bash 中可以使用几种内置程序和命令生成随机字符串的。在本文中,我们将探索实现这一目标的各种方法,并提供相关的示例。
1. 使用 $RANDOM 变量
Bash shell 提供了一个名为 $RANDOM 的特殊变量,它返回 0 到 32767 之间的随机数。您可以利用这个变量来生成一个随机字符串。
echo $RANDOM
但是,这只会返回一个数字。如果您想要一个包含字符的字符串,那么您可能需要更具创造性一些。
echo $(date +%s%N) | sha256sum | head -c 10
该命令使用当前时间戳(以纳秒为单位),并将其输送到 sha256sum 命令,然后取前 10 个字符。
2. 使用 /dev/urandom
/dev/urandom 是一个设备文件,它提供了一个加密安全的随机数源。
例如,生成一个长度为 10 的随机字符串
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1
相关参数说明如下:
- cat /dev/urandom : 从 /dev/urandom 输出随机字节
- tr -dc 'a-zA-Z0-9' : 删除非字母数字的字符
- fold -w 10 : 将输出封装为 10 个字符宽,实际上每行 10 个字符
- head -n 1 : 只需要第一行
3. 使用 openssl
可以使用 openssl 命令和 base64 编码函数,例如:生成长度为 10 的随机字符串(包括字母、数字和特殊字符)
openssl rand -base64 10
你也可以使用 tr 命令删除不希望包含的任何字符。例如:生成一个长度为 10 的随机字符串(只包含大写字母和数字)
openssl rand -base64 10 | tr -dc 'A-Z0-9'
4. 使用 pwgen
pwgen 是一个专门用来生成密码的工具,也就是说可以产生随机字符串。如果你没有安装它,你可以通常通过包管理器(apt-get、 yum、 brew)获取安装。
例如,生成一个长度为 10 的随机字符串。
pwgen 10 1
5. 使用 Bash Arrays
您可以将 bash 数组与 $RANDOM 组合以生成随机字符串。
ARRAY=('a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z')
RAND_STR=""
for i in {1..10}; do
RAND_STR+="${ARRAY[$RANDOM % ${#ARRAY[@]}]}"
done
echo $RAND_STR
我的开源项目
评论已关闭
