答案1
此类垃圾可能是将二进制数据输出到控制台的命令的后果。通常您不希望命令执行此操作。但由于错误或某些错误,仍有可能出现这种情况。示例:
您想知道文本文件在cat file
哪里file
,但您输入了错误,而运行的结果cat fild
恰好fild
是一个二进制文件。
在这种情况下,某些特定的字节序列可能会被终端仿真器解释为控制序列等,它们会影响其后续行为。
修复这个问题:
- 如果某个进程仍在运行或者您在命令行中盲输入了一些内容,请按Ctrl+几次。C
- 类型
reset
。 - 打Enter。
当以 形式调用时
reset
,tset
设置熟模式和回显模式,关闭 cbreak 和 raw 模式,打开换行符转换,并在执行上述终端初始化之前将任何未设置的特殊字符重置为其默认值。这在程序终止并导致终端处于异常状态后很有用。请注意,您可能需要输入<LF>reset<LF>
(换行符通常是 control-J)以使终端工作,因为回车符在异常状态下可能不再起作用。此外,终端通常不会回显命令。
因此,该命令更万无一失的版本似乎是:
- 输入Ctrl++ J
reset
Ctrl。J
我的经验(特别是在tmux
)表明,在某些情况下reset
可能没有帮助;但它通常还是有帮助的。
reset
POSIX 不要求这样做。以下命令可能每个都有所帮助:
stty sane
,tput reset
。