在bash中生成随机字符

时间:2012-05-08 10:54:39

标签: bash shell

我需要生成一个巨大的文本。

我正在使用bash,我想将65之类的整数转换为A之类的字符。 所以我在0255之间使用随机值(我需要所有的ASCII表),转换为char并使用>>重定向到文件。 但我不能让bash将整数解释为char。 就像C ++中的printf("%c", 65)一样。 但是如果我在bash中尝试这个,它会返回6。

3 个答案:

答案 0 :(得分:4)

你需要像

一样链接它
printf \\$(printf '%03o' $((65)))

答案 1 :(得分:3)

如果您需要生成一个巨大的随机字节序列,为什么不使用/dev/urandom

$ RANDOM=$( dd if=/dev/urandom bs=1024 count=1|base64 )
1+0 records in
1+0 records out
1024 bytes (1.0 kB) copied, 0.00056872 s, 1.8 MB/s
$ echo $RANDOM
r553ONKlLkU3RvMp753OxHjGDd6LiL1qSdUWJqImggHlXiZjjUuGQvbSBfjqXxlM6sSwQh29y484
KDgg/6XP31Egqwo7GCBWxbEIfABPQyy48mciljUpQLycZIeFc/bRif0aXpc3tl5Jer/W45H7VAng
[...]

我将输出传送到base64以避免可能会混淆终端的控制字符。

$ RANDOM=$( dd if=/dev/urandom bs=1024 count=1 )

$ dd if=/dev/urandom of=outputfile bs=1024 count=1

将创建一个包含1kB随机数据的文件。

答案 2 :(得分:2)