如何纠正我的 Debian 中无法识别的代码?

如何纠正我的 Debian 中无法识别的代码?

运行输出无法识别代码的程序后,整个shell将充满无法识别的代码。

替代文本

我该如何纠正这个问题?

答案1

SI/SO VT100 控制字符

乱码可能是由于终端获取SI字符(Shift In;ASCII 14;Control-N)。SIVT100 控制字符这会导致终端切换到备用字符集。许多实际终端(例如实际的硬件设备,或者只是操作系统的纯文本控制台)和终端程序都遵守此转义代码。

切换回正常字符集的直接方法是向终端发送 SO 字符(Shift Out;ASCII 15;Control-O)。

恢复

因为字符集被切换了,您可能必须“盲目”输入恢复命令(不依赖于看到您所输入的内容)。

通常该echo命令会很有用。通常您可以输入
E C H O Space Control- V Control-O Enter / Return
让终端看到 Control-O(Control-V 告诉终端的输入端下一个字符要逐字传递,否则输入端将在获取 shell 之前“吃掉”该字符,因此在将其发送回终端的输出端之前)。

如果您可以假设一个具有内置命令的合理 shell printf(或者没有内置 shell 并且有一个合理的外部printf命令),您可以使用printf '\017'它来向终端发送 Control-O。

答案2

您尝试过 unixreset命令吗?

这通常是将二进制文件(程序或数据文件)转储到终端(cat some.mp3或类似终端)的结果。通常输入reset即可让终端恢复正常。如果这不起作用,下一步要尝试的是终端应用程序上的重置功能 - 在应用程序的菜单中查找它。(例如,PuTTYReset Terminal在其系统菜单中有一个。)

很少情况下,这两种方法都不起作用,这时您只需关闭该终端或 shell 并启动另一个即可。

相关内容