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

read /dev/urandom 3 

以上是不工作..我怎样才能从bash中的/dev/urandom读取随机字节?

 random="$(dd if=/dev/urandom bs=3 count=1)" 
 head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1 

(如果你想要文字破折号字符,破折号字符必须在string的末尾,如上所述,而不是*-_ )。

并解释由于上述命令完成了什么:

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

请检查man od

你可以使用,例如

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

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

下面是创buildbase64string的一个例子,注意即使它们仅限于base64string,填充也会从中删除,因此无法对它们进行解码,您可能不需要它。

  cat /dev/urandom | base64 | head -c 5 

用你想要的字符数replace5

如果您因为某种原因需要解码它们,请将base64移动到pipe道的末端。 然后它会从urandom收集5个字符,base64使用正确的填充进行编码,但是由于填充,最终的string可能比您想要的长。

 cat /dev/urandom | head -c 5 | base64 

试试这个: dd if=/dev/urandom bs=1 count=3

如果你想把结果放在$ variable中:

 variable=`dd if=/dev/urandom bs=1 count=3` 

请注意,它可能不会打印。

最简单的解决scheme将如下所示:

 $ head -cN /dev/urandom