为什么不显示我在 tty 中输入的字符?

为什么不显示我在 tty 中输入的字符?

我按下CtrlAltF1输入 TTY1。我主要在 vim 上工作了一段时间,然后我的 shell (bash) 停止了回声。

如果我输入echo abc它不会显示。

相反,我得到这样的屏幕: 具有级联线的 Bash shell

我该如何解决这个问题?

答案1

tty是复杂的野兽,可以在几种不同的情况下工作模式。例如跑步时vi(1),你希望输入的字符显示在屏幕上,编辑器负责显示的内容。这称为“原始”模式。通常,您处于“回显”模式,在该模式下,内核将键入的内容直接发送到屏幕。如果接管显示详细信息的程序崩溃并且在退出之前没有恢复模式,则在键入时会显示各种奇怪的内容。另一种搞砸设置的流行方法是将二进制文件(例如可执行文件或图像)发送到屏幕,它们很容易包含更改设置的按键序列......

将设置恢复正​​常的方法tty是运行命令reset,这是通过^Jreset^J^Jctrl-J,同时按 ctrl 和 J 键)完成的。

ctrl-JC 称之为“\n”,NEWLINE,它结束 shell 正在读取的上一行(如果有);reset是命令;ctrl-J结束该行并使 shell 运行该命令。这个废话是必要的,因为返回键生成'\r',即回车符,为了方便起见,普通模式将其转换为'\n'。

欢迎来到错综复杂的 Unix 根源。

相关内容