我不得不运行一个命令行工具(Python脚本),其输出似乎打破了我的终端。
执行完成后,输入的反馈消失了(我看不到我正在键入的内容),也没有显示换行符。如果通过Putty
远程启动终端,并且在使用gnome-terminal
时在本地启动,则会发生这种情况。
例如,问题发生后,如果我输入 ENTER pwd
ENTER ,我希望看到:
[userA@host006 ~]$
[userA@host006 ~]$ pwd
/home/userA
[userA@host006 ~]$
但实际输出是:
[userA@host006 ~]$ [userA@host006 ~]$ /home/userA
[userA@host006 ~]$
修复它的唯一方法是关闭该终端并开始一个新终端。
可能是相关的:脚本输出包含一些基于终端的格式化(例如,反转前景/背景以突出显示某些状态消息)。如果我将此输出转储到文件,我可以看到[07mSome Message Here[0m
。
我有什么想法可以防止这种情况发生?
答案 0 :(得分:93)
执行命令reset
,您的终端应该恢复(reference)。
这个问题通常在将二进制数据转储到终端STDOUT
时发生,当收到转义的转义代码时,可以通过更改文本的颜色,禁用回显甚至更改字符集来执行任何操作。
避免这种情况的简单方法是确保不将未知二进制数据转储到终端,如果必须将其转换为十六进制以确保它不会更改终端设置。
答案 1 :(得分:4)
要详细说明Joshua Briefman's answer,执行reset -c
只会重置导致问题的控制字符:
tset
,reset
- 终端初始化
Usage: tset [options] [terminal]
Options:
-c set control characters
-e ch erase character
-I no initialization strings
-i ch interrupt character
-k ch kill character
-m mapping map identifier to type
-Q do not output control key settings
-r display term on stderr
-s output TERM set command
-V print curses-version
-w set window-size
另请注意以下命令manual:
注意,您可能需要输入
<LF>reset<LF>
(换行符通常是control-J)使终端工作,因为回车可能不再在异常状态下工作。此外,终端通常不会回显命令。