如何防止随机控制台输出破坏终端?
SE上有许多问题,显示了如何从损坏的终端中恢复cat /dev/urandom。对于那些不熟悉此问题的人-这里的内容是: 您执行cat /dev/urandom或等效操作(例如cat binary_file.dat)。 打印垃圾。 没关系...除非您的终端即使在命令完成后仍继续打印垃圾!这是实际上是g ++输出的文本错误呈现的屏幕截图: 我猜人们对C ++错误有时过于神秘是正确的! 通常的解决方案是运行stty sane && reset,尽管每次发生时都运行它很烦人。 因此,我要重点关注的是发生这种情况的原始原因,以及在发出此命令后如何防止终端损坏。我不是在寻找诸如将有问题的命令传递到tr或的解决方案xxd,因为这要求您在实际运行/打印之前知道程序/文件输出二进制文件,并且每次输出此类数据时都需要记住该文件/二进制文件。 我注意到URxvt,PuTTY和Linux帧缓冲区中的行为相同,所以我认为这不是终端特定的问题。我的主要怀疑是随机输出包含一些ANSI转义代码,该代码会翻转字符编码(实际上,如果cat /dev/urandom再次运行,很有可能它将破坏终端,这似乎证实了这一理论)。如果正确,那么此转义码是什么?有禁用它的标准方法吗?