获取一个随机数

原由是一个updatehost文件造成的!FreeBSD在脚本里无法运行$RANDOM,在提示符下却可以正常运行.
然后就知道有/dev/urandom这么一个设备.它能产生随机的字节.
再然后就看到一个用法,很适合用于创建随机的密码,现将它的写法记录下来,以备以后有用:

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8

就是随机产生8位_A-Z-a-z-0-9的数据.

如果在运行的时候出现了 tr: Illegal byte sequence 的错误信息的话,那就是在这行代码中加入一些内容,

< /dev/urandom LC_CTYPE=C tr -dc _A-Z-a-z-0-9 | head -c8

原因就是:http://nerdbynature.de/s9y/?176 中的

$ cat /tmp/foo
ÿs
$ tr -d r < /tmp/foo
tr: Illegal byte sequence

Whoops? Let’s take a closer look:

$ od -x /tmp/foo
0000000 73ff 0a0d
0000004

So, it’s some unicode character (0xff), a small “s” (0x74), then a CR (0x0d, which I’m trying to remove) and a newline (0x0a) at the end. Turns out it’s how MacOS 10.6 handles unicode characters. Specifying a different locale seems to help:

$ LC_CTYPE=C tr -d r < /tmp/foo
ÿs

再废话一下上面那段代码,给自己作一个记录。

tr -dc _-a-z-A-Z-0-9是将/dev/urandom输出的内容替换成”_ or a..z or A..Z or 0..9这些字符,如果单是使用< /dev/urandom会输出很多我们无法看到或看不到的内容,使用tr将它转换成我们容易看得懂的字符真的挺好的。

然后通过管道将这些内容传到head里,让head限制这些内容只输出头12个字符就可以了,其它的都扔掉吧!

附一段< /dev/urandom LC_CTYPE=C tr -dc _@-#-a-z-A-Z-0-9 的输出信息:
J*0&L.;M[G4RaX?T3$9CDU(Y:,G(GHY7OE./QGN]IY,KZ4Q1+&'$B5:-,(4^>Tz#ET5[('%?0'9O?;NHRH'(%$2@:YT2=JT@z;__@3C8R.OR^>OGaLEX35*[31XJ)E4++#M=aKLPDYIJL`D(D-R&N3J]H;5/C(QD;C@6SR@U7]%<16a:aEI.aRB9[V(aA+^]%R$VM1ZF7aTB98_6UYWM1[z]BEY_+':M]`.G;IF*WTM^5JPz^(&JJ69@WM#N4F__LKBF'^0VC%O4?RI/A%.%2^8YE'9Z4`1&]*XE1$&`X##;69X@[GIU'P;5Y1J<aiy/L5%)TXz*'0-<m<@,JGP3(/T5.R0&O,7^LGF'<$OMC^T&>S$N&VW7QK7CXS+,W@(JCOJL',;#N42a/R7'&1*3%+$4$&`37)$^W-P>/:^[@]+O6BGT73`51PNU&@-OLaA$G^BF^@J'DH-_B.O2`8_Z[@Y>.Z5E@R^+?/#J_DVLV@K3G%MK:74/Y9Y`1^5.I>I^K4(86L]PTK[DVDGz9%:E2WL.$>5SOR*5+X7?M$8_%AD;Y8$Z0[:>=W'19Z<2BK=+WP$@S2%IBGN4AJ<i4`H1D_+`$'J-4P3)*3F8^+'4Q?>z2AU2-H@HD2ANNDY*Z0ME:*U8U9R(GIQC@2a;E<a'$5,I-;?/)F7P$9<*`2=-RNaXH?%)C1<9/8?T;^AW*FYT`D')[_/<h2JDCY##+JOL7_:SBCGIQ.KzOE5D6>(Y+%H*X4R>O-CP]WI6;[KSK$ON]aC;;H/9%E0)'$ZT]3E`24X@>-%+zR#;K,(4(a.S/1#zYNS_-`5EWW4H9]+5^RX835;7aNIL,X3'^EPBPKYW9;R@]=:R7.$JE=1'&38zDK&_->@S@%%N(?6K^+J@U5*JI@U$M`]81['YXTENTV#6LWZ28.X4A6(D;%aDZ]^$3((SP(-DHaU#7R[;*U3,+Z]BAW9,3VzG:3z4%I_%F5O3GY@+PQ4$?GLLE^Y;/(_48GBY9:UMORU7NE-'P$+#'Z@.[V,6J%,S/EBMOV0[8z6>z<e[]MN+_F('3=a1FAH+H==`FWW4$G#@8?C]LG&MV_+NaLG=5,QI.L,1ZUHR=^C1XORCP:[Y7)<p-&,*]R_]UT<tbcn?99@32GKQ?'`a491?B7)J=<)Z.#H+7?FT65`CLI09X0UC0KUF8S;:GVGICH]`+PTK1DQRE]FI4$@:?#4NNX+DH0J``KZJSXIY%?<f=^U&47/<3;%$RLY7C&<@0+D:&?M*9JDG&XRX6I&&1aPZBYP?#PJFNIU)aT6-JYIV]`DOI9zZ.z6OBB`'M4Q+CzW`Z/SM,GBL`D?C'>4XP4K(_9[QzVDG_(70$ZaAN9F7Mz)0>W

获取一个随机数”的一个响应

留下评论