控制台中出现奇怪的字符

控制台中出现奇怪的字符

我正在使用 Linux 控制台,突然字母的格式发生了变化:

控制台Linux字母格式不正确

我可能按错了键。有办法解决这个问题吗?

答案1

此类垃圾可能是将二进制数据输出到控制台的命令的后果。通常您不希望命令执行此操作。但由于错误或某些错误,仍有可能出现这种情况。示例:

您想知道文本文件在cat file哪里file,但您输入了错误,而运行的结果cat fild恰好fild是一个二进制文件。

在这种情况下,某些特定的字节序列可能会被终端仿真器解释为控制序列等,它们会影响其后续行为。

修复这个问题:

  1. 如果某个进程仍在运行或者您在命令行中盲输入了一些内容,请按Ctrl+几次。C
  2. 类型reset
  3. Enter

man 1 reset

当以 形式调用时resettset设置熟模式和回显模式,关闭 cbreak 和 raw 模式,打开换行符转换,并在执行上述终端初始化之前将任何未设置的特殊字符重置为其默认值。这在程序终止并导致终端处于异常状态后很有用。请注意,您可能需要输入

<LF>reset<LF>

(换行符通常是 control-J)以使终端工作,因为回车符在异常状态下可能不再起作用。此外,终端通常不会回显命令。

因此,该命令更万无一失的版本似乎是:

  1. 输入Ctrl++ JresetCtrlJ

我的经验(特别是在tmux)表明,在某些情况下reset可能没有帮助;但它通常还是有帮助的。


resetPOSIX 不要求这样做。以下命令可能每个都有所帮助:
stty sanetput reset

相关内容