Shell脚本/ dev / urandom

时间:2013-10-07 11:37:33

标签: bash shell stdout

我想制作bash脚本,该脚本向stdout发送一个只包含ASCII可写字符的文件映像。我的脚本应该只接收和接受一个包含应从/ dev / urandom读取的八位字节数的参数。 因此,我需要从/ dev / urandom读取给定数量的八位字节以创建要发送到stdout的文件映像。 我有这个:

  

!/斌/庆典

     

X = 1

     

if [$ X -eq 0] then echo“Error:需要参数”

     

否则

     

strings / dev / urandom
  回应结果

     

网络连接

基本上我正在检查是否有任何参数,如果存在,则读取dev / urandom。当然这只是一个草图。

我被告知有一个叫做字符串的命令,可以从任何文件中读取和提取字符序列,但是我已经在互联网上查了一下,我找不到很多关于它的信息。

所以我的问题是:我如何读取/ dev / random参数中给出的八位字节数,以便我可以将它们放在stdout中(我知道如何使用stdout :))

1 个答案:

答案 0 :(得分:6)

strings不是你想要的。如果您只想将随机字符限制在特定集合中,请过滤掉您不想要的内容。要从/dev/urandom获取$ num字母数字字符,您可以执行以下操作:

tr -dc A-Za-z0-9 < /dev/urandom | dd bs=$num count=1 2> /dev/null

tr -dc '[:alnum:]' < /dev/urandom ...

请注意,这不是严格的便携式。虽然tr的标准声明它应该适用于任何输入文件,但我的版本却抛出错误“非法字节序列”。另一种选择是:

perl -pe 's/[^a-zA-Z0-9]//g' /dev/urandom | dd bs=$num count=1 2> /dev/null