我注意到这种情况发生过不止一次。
如果我没记错的话,这通常发生在 OOM 和/或内核恐慌之前,如果你在 tty 中输入内容然后尝试退格,则相同的字符会以反向方式打印出来。
过去,这对我来说只是一个有趣的怪事,但最近又发生了,我越来越好奇到底是什么原因造成的。(是将字符发送回 STD_OUT 还是其他原因?)
有人知道吗?我觉得答案会很有趣。
让我清楚一点,如果你输入你好世界,然后尝试按退格键:
hello world..dlrow olleh
答案1
这是由于终端的终端设置混乱造成的 - 您可以通过执行stty -a
并查找echoprt
控制该设置的选项来查看。从stty(1) 手册页,此选项“将删除的字符向后回显在‘\’和‘/’之间”。
要快速修复此问题,请输入stty sane
,然后输入类似stty erase '^H'
退格键的内容,或输入 `stty erasure '^?' 删除(即引号内的末尾两个字符)。请参阅Linux 键盘退格/删除部分 HOWTO了解更多信息。
看看这种情况是否发生在所有 Linux 控制台(Alt-F1、Alt-F2 等)和/或基于 X 的终端窗口中使用的伪终端上会很有趣。无法弄清楚 OOM 条件如何导致这种情况,因为它由内核管理。
历史记录:该echoprt
选项最初设计用于电传打字机终端它有一个打印机而不是屏幕,因为这是显示退格/删除操作的唯一方法——这些是 Unix 创建时的标准终端。 本文对 Linux 终端(TTY)子系统进行了很好的解释。