![为什么“cat /dev/urandom”会破坏你的终端?](https://linux22.com/image/1375794/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9Ccat%20%2Fdev%2Furandom%E2%80%9D%E4%BC%9A%E7%A0%B4%E5%9D%8F%E4%BD%A0%E7%9A%84%E7%BB%88%E7%AB%AF%EF%BC%9F.png)
关于这个问题:https://serverfault.com/questions/534449
如何cat /dev/urandom
使一些终端仿真器变得不稳定?
答案1
虽然终端上会来回发送一些正常的、可打印的 ASCII 字符,但也有许多不可打印的字符,用于系统与终端通信。例如,如果程序发送字符0x07
(“ASCII 铃声字符”),您的终端应该会发出哔哔声。
其他特殊序列可用于改变所显示文本的颜色、显示方向、窗口标题、窗口大小等等。
当你
cat /dev/urandom
一堆随机字符被转储到您的终端,并且终端无法判断它不是真正的控制代码。
由于该程序实际上是向终端发送随机命令,因此终端最终处于随机、通常不可用的状态。
答案2
一些随机输出将是 ANSI 转义码(http://en.wikipedia.org/wiki/ANSI_escape_code),它可以做一些有趣的事情,比如隐藏光标或选择备用字体。另一种可能性是 unicode 序列:随机字节流将不是有效的 UTF-8,并且可能并非所有支持 unicode 的终端都能很好地处理这种情况。
答案3
cat /dev/urandom
0
将为您提供介于和之间的随机字节流255
,并非所有这些值都是有效的文本字符。由于终端窗口输入了无效数据,因此它从未被期望处理它,这可能会使终端应用程序进入“损坏”状态。