如何从 /dev/urandom 读取 N 个随机字符?

如何从 /dev/urandom 读取 N 个随机字符?
read /dev/urandom 3

上述方法不起作用..我如何从/dev/urandombash 中读取随机字节?

答案1

random="$(dd if=/dev/urandom bs=3 count=1)"

if指定输入文件、bs块大小(3 个字节)和count块数(1 * 3 = 总共 3 个字节)

答案2

head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1

(如果您想要文字破折号字符,则破折号字符必须位于字符串的末尾,如上所述,而不是*-_)。

解释一下上述命令集所完成的工作:

  1. head -c 500 /dev/urandom:从中获取前500个字符(字节)/dev/urandom
  2. tr -dc 'a-zA-Z0-9~!@#$%^&*_-': 消除但是'a-zA-Z0-9~!@#$%^&*_-'来自第一个命令的输出的指定的字符。
  3. fold -w 3:格式化第二个命令的输出,使得每行有 3 个字符。
  4. head -n 1:显示第三条命令的结果第一行stdout

答案3

请检查man od

例如,您可以使用

od -vAn -N4 -tu4 < /dev/urandom

生成无符号十进制4字节随机数。

答案4

最简单的解决方案如下:

$ head -cN /dev/urandom

相关内容