如何重置损坏的 TTY?

How*_*ard 20 linux unix terminal tty

我的 Slackware TTY 可以通过运行以下命令轻松破解:

cat some_binary_file
Run Code Online (Sandbox Code Playgroud)

命令后,整个 TTY 将不再显示可读字符,但仍会响应键盘事件。

即使我注销并再次登录,TTY 仍然损坏并且不再显示可读字符。我必须重新启动机器才能恢复正常的 TTY 操作。

有没有不重启整个机器的解决方案?

cho*_*oba 36

通常,运行会reset重置终端。.inputrc但是,可能会丢失一些键绑定。


Flo*_*ian 16

运行echo ^v^o,即echo然后Ctrl-v然后Ctrl-o,回车。你不会看到Ctrl-v. 它将显示为echo ^OCtrl-v将其设置为详细模式,通过控制字符,Ctrl-o并将重置终端。

  • 只是一个简短的提示:如果 TTY 完全无法使用或日志控制台,您可以使用 `echo ^v^o > /dev/ttyN` 从任何其他 TTY 轻松重置它,其中 N 是终端的编号。 (6认同)
  • 这在 MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2) 上对我不起作用 (2认同)

jll*_*gre 13

您可以尝试使用 ANSI 重置命令:

printf "\033c"
Run Code Online (Sandbox Code Playgroud)

  • @EdRandall 是的。请注意,并非所有 shell 都支持“echo -e”,而 `printf` 具有可移植的优点,因此可以在任何 shell 中工作,包括 bash。 (3认同)

Jes*_*sen 7

我的终端没有显示我输入的任何字符。其他技巧都没有奏效。这个有效:

stty sane
Run Code Online (Sandbox Code Playgroud)

为我工作。有时我的终端处于无响应状态,但没有其他建议可以再次给我输出。我尝试过的其他建议,但没有奏效:

echo ^v^o
reset
printf "\033c"
Run Code Online (Sandbox Code Playgroud)

来源:https : //unix.stackexchange.com/a/79686/53236