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的末尾,如上所述,而不是*-_
)。
并解释由于上述命令完成了什么:
head -c 500 /dev/urandom
:从/dev/urandom
获取前500个字符(字节)。 tr -dc 'a-zA-Z0-9~!@#$%^&*_-'
: 除了 'a-zA-Z0-9~!@#$%^&*_-'
从第一个命令的输出。 fold -w 3
:格式化第二个命令的输出,使其每行有3个字符。 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