cat /dev/urandom
是在显示器上创建滚动字符的有趣方式,但产生了过多的不可打印字符。
是否有一种简单的命令行编码方式,使其所有输出都是可读字符,例如base64或uuencode。
请注意,我更喜欢不需要创建其他文件的解决方案。
那么类似这样的东西怎么办呢?
cat /dev/urandom | base64
这会提供(大量的)类似以下的东西:
hX6VYoTG6n+suzKhPl35rI+Bsef8FwVKDYlzEJ2i5HLKa38SLLrE9bW9jViSR1PJGsDmNOEgWu+6
HdYm9SsRDcvDlZAdMXAiHBmq6BZXnj0w87YbdMnB0e2fyUY6ZkiHw+A0oNWCnJLME9/6vJUGsnPL
TEw4YI0fX5ZUvItt0skSSmI5EhaZn09gWEBKRjXVoGCOWVlXbOURkOcbemhsF1pGsRE2WKiOSvsr
Xj/5swkAA5csea1TW5mQ1qe7GBls6QBYapkxEMmJxXvatxFWjHVT3lKV0YVR3SI2CxOBePUgWxiL
ZkQccl+PGBWmkD7vW62bu1Lkp8edf7R/E653pi+e4WjLkN2wKl1uBbRroFsT71NzNBalvR/ZkFaa
2I04koI49ijYuqNojN5PoutNAVijyJDA9xMn1Z5UTdUB7LNerWiU64fUl+cgCC1g+nU2IOH7MEbv
gT0Mr5V+XAeLJUJSkFmxqg75U+mnUkpFF2dJiWivjvnuFO+khdjbVYNMD11n4fCQvN9AywzH23uo
03iOY1uv27ENeBfieFxiRwFfEkPDgTyIL3W6zgL0MEvxetk5kc0EJTlhvin7PwD/BtosN2dlfPvw
cjTKbdf43fru+WnFknH4cQq1LzN/foZqp+4FmoLjCvda21+Ckediz5mOhl0Gzuof8AuDFvReF5OU
或者,不使用(无用的)cat
和pipe
:
base64 /dev/urandom
(输出结果相同^^)
编辑:你也可以使用--wrap
选项的base64
命令,以避免出现“短行”:
base64 --wrap=0 /dev/urandom
这将消除包裹,您将获得“全屏”显示^^base64 --wrap=0 /dev/urandom |head -c 100
可以获取100个随机的base64字符。如果你正在寻找一个基于bash的Matrix风格屏幕保护程序,之前已经有人做过了 :-) - Adam Katz有些人建议使用cat
和管道通过base64
或uuencode
进行转换。但这样做存在一个问题,你无法控制要读取多少数据(它会一直持续下去,或者直到按下ctrl+c为止)。另一个可能性是使用dd
命令,它可以让您在退出之前指定要读取的数据量。例如,要读取1kb:
dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64
另一种选择是使用管道命令 strings
,它可以提供更多的输出变化(非可打印字符被丢弃,默认情况下显示至少 4 个可打印字符的任意运行)。问题在于 strings
将每个“运行”单独显示在自己的一行上。
dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings
(当然可以用以下命令来代替整个命令
strings /dev/urandom
如果你不想它永远停止,可以尝试:
如果你想要一些真正新奇的东西,可以尝试以下之一:
cat -v /dev/urandom
dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v
head -c 100
将打印文件的前100个字节。 - Mark Rushakoffstrings /dev/urandom | perl -pe 's/\n//'
。 - mivk那么,有什么问题吗?
(关于 IT 技术)cat /dev/urandom | uuencode -
第一次尝试没有成功,修复后问题已解决...:: 唉::
顺便说一句 - 许多 Unix 实用程序使用“-”代替文件名表示“使用标准输入”。
cat
使用 - 改用以下方式:uuencode /dev/random -
- Dennis Williamsoncat /dev/urandom | base64
)。但是在问题的主体中,您进行了详细说明:
…对[urandom]进行命令行编码,使其所有输出都是可读字符,例如base64或uuencode。
鉴于您实际上不需要可解析的base64,只是想要它可读,我建议
cat /dev/urandom | tr -dC '[:graph:]'
base64
只能输出字母数字及两个符号 (+ 和 / 默认情况下)。而 [:graph:]
则匹配任何可打印的非空格 ASCII 字符,包括许多符号/标点,这些在 base64 中是缺失的。因此使用 tr -dC '[:graph:]'
将产生更随机的输出,并具有更好的输入/输出效率。
我经常使用 < /dev/random stdbuf -o0 tr -Cd '[:graph:]' | stdbuf -o0 head --bytes 32
来生成强密码。
tr -dC '[:graph:]' </dev/urandom
- RubyTuesdayDONOcat /dev/urandom | tr -dc 'a-zA-Z0-9'
使用BASH的FIFO管道,您可以做更有趣的事情:
uuencode <(head -c 200 /dev/urandom | base64 | gzip)
尝试
xxd -ps /dev/urandom
{{link1:xxd(1)
}}