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

tmp*_*bin 2 bash ubuntu tty display

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

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

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

我该如何解决问题?

von*_*and 7

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

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

ctrl-J是 C 所称的“\n”,NEWLINE,它结束 shell 正在读取的前一行(如果有);reset是命令;ctrl-J结束该行并使 shell 运行命令。这个废话是必要的,因为返回键生成'\r',CARRIAGE RETURN,为了方便,正常模式将其转换为'\n'。

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