为什么“cat /dev/urandom”会破坏你的终端?

为什么“cat /dev/urandom”会破坏你的终端?

关于这个问题: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/urandom0将为您提供介于和之间的随机字节流255,并非所有这些值都是有效的文本字符。由于终端窗口输入了无效数据,因此它从未被期望处理它,这可能会使终端应用程序进入“损坏”状态。

相关内容