创建随机非单词

创建随机非单词
dd if=/dev/urandom of=a.log bs=1M count=2

问题:如果此代码^给我随机数,我如何才能获得随机非单词(难以理解),例如“hgcqw”。

问题2:shuf命令可以和dd命令配合使用吗?

谢谢!

6/21 更新。(父亲节)

@Serg 我的目标是首先获得数字。比如说,从 01-100 中随机抽取两位数字。输入命令并运行代码。最终它会给我 14、17、21、35(我正在编造我得到的随机数)。接下来,我想得到这些数字的平均值。在这种情况下,平均值将是 21.75(22)。目标是停止循环,直到找到我正在寻找的特定平均值。在这种情况下,平均值将是 25。我的第二个目标是获取随机单词,然后计算出使用了哪些单词。

@ terdon

单词是“buck”、“duck”或“good old luck”。基本上字典里的任何单词都可以。长度可以是任意长度,但如果我们将限制限制为 5 个字母,我不介意学习如何操作?

什么是单词?我猜你的意思只是 az 和 AZ,但长度是多少?liwyduglashvdbalishfvgapivflakhf 是一个单词吗?ksjdas-asd-asd-asd 怎么样?- 可以用单词表示。请编辑并澄清。– terdon 昨天

答案1

生成一个随机字母字符。

tr -cd '[:alpha:]' < /dev/urandom | fold -w1 | head -n1  

生成一个长度为 10 个字符的随机字母字符串。

tr -cd '[:alpha:]' < /dev/urandom | fold -w10 | head -n1

alpha可以代替in使用的替代 POSIX 字符类[:alpha:]包括: alnum - 字母数字字符
alpha - 字母字符
digit - 数字
graph - 可见字符
lower - 小写字符
upper - 大写字符

生成特定范围内的随机数(例如1-10)。

shuf -i 1-10 -n1  

与前两个 bash 示例相比,该shuf命令提供的生成随机字符串的选项较少,但shuf可用于生成随机排列。

答案2

dd if=/dev/urandom of=a.log bs=1M count=2

这不会给你随机数。这会让你随机字节。您可以将其编码为数字:

hexdump -v -e '"%d\n"' /dev/urandom | dd of=a.log bs=1M count=2

(早期版本使用od,但od的输出格式相当不灵活。)

直接使用/dev/random可能相当浪费,因为它是字节流。您可以将其编码为base64,然后删除非字母,这样平均仍可获得 80% 的输入数据:

base64 /dev/urandom | tr -cd '[[:alpha:][:space:]]'

这往往会留下相当长的行。您可以用换行符替换数字:

base64 /dev/urandom | sed 's/[^[:alpha:]]\+/\n/g'

答案3

生成一个 2MB 的随机字母小写字符串(包括空格):

< /dev/urandom tr -dc 'a-z ' | head -c 2000000 > a.log

对于恒定流:

< /dev/urandom tr -dc 'a-z '

生成一个 2MB 的随机字母混合大小写字符串(包括空格):

< /dev/urandom tr -dc 'A-Za-z ' | head -c 2000000 > a.log

对于恒定流:

< /dev/urandom tr -dc 'A-Za-z '

答案4

这是我的想法。mkpasswd经常用于生成加密密码,因此那里的字符串应该已经无法理解了。小问题是它生成的字符串带有数字。通过使用 sed,我们可以摆脱这些数字。

mkpasswd | sed 's/[0-9]/YOLO/g'

YOLO 可以是任何你想要替换的数字。你也可以直接删除它们:

mkpasswd | sed 's/[0-9]//g'

这是另一种方法:

$ date | md5pass | sed 's/[0-9]//g'                                                                                                   
$$NG.dLw$vcpGCylnDtmptDtogDr/

正如 muru 在下面的评论中所建议的,您也可以安装pwgen、使用sudo apt-get install pwgen并运行pwgen -0。-0 标志告诉命令避免使用数字

这是 sha1pass + sed 组合:

sha1pass | sed 's/[[:digit:]]//g' | sed 's/[[:punct:]]//g'
结果:PoXGAlAWjzMHgmfzHiYHGpemzqE

使用 $RANDOM 变量的另一种方法:echo $RANDOM | tr '0-9' 'a-z'

总的来说,如果你的目标是生成密码,我建议你阅读这篇文章:

http://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/

相关内容