lin*_*nux 66 bash random-number-generator
read /dev/urandom 3
Run Code Online (Sandbox Code Playgroud)
以上不起作用..如何从/dev/urandombash中读取随机字节?
小智 61
head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1
Run Code Online (Sandbox Code Playgroud)
(如果您想要文字破折号字符,破折号字符必须按上述方式放在字符串的末尾,而不是*-_)。
并解释由于上述命令集而完成的工作:
head -c 500 /dev/urandom: 获取前 500 个字符(字节)/dev/urandom。tr -dc 'a-zA-Z0-9~!@#$%^&*_-':从第一个命令的输出中删除除 中指定的字符以外的所有字符'a-zA-Z0-9~!@#$%^&*_-'。fold -w 3:格式化第二个命令的输出,使其每行包含 3 个字符。 head -n 1: 显示第三条命令结果的第一行stdout。Fli*_*mzy 53
random="$(dd if=/dev/urandom bs=3 count=1)"
Run Code Online (Sandbox Code Playgroud)
小智 42
请检查man od。
例如,您可以使用
od -vAn -N4 -tu4 < /dev/urandom
生成无符号十进制 4 字节随机数。
Umu*_*acı 26
这是创建 base64 字符串的一个,请注意,尽管它们仅限于 base64 字符串,但填充已从它们中删除,因此您无法对其进行解码,无论如何您可能都不需要它。
cat /dev/urandom | base64 | head -c 5
Run Code Online (Sandbox Code Playgroud)
替换5为您想要的字符数。
但是,如果您出于某种原因需要对它们进行解码,请移至base64管道的末端。然后它将从 urandom 收集 5 个字符,并使用正确的填充对其进行 base64 编码,但由于填充,最终字符串可能比您想要的长。
cat /dev/urandom | head -c 5 | base64
Run Code Online (Sandbox Code Playgroud)
Edu*_*nec 11
尝试这个: dd if=/dev/urandom bs=1 count=3
如果你想把结果放在 $variable 中:
variable=`dd if=/dev/urandom bs=1 count=3`
Run Code Online (Sandbox Code Playgroud)
请注意,它可能无法打印。
Spa*_*ack 11
最简单的解决方案很简单:
$ head -cN /dev/urandom
Run Code Online (Sandbox Code Playgroud)