Linux终端:输入反馈消失,换行符不显示

时间:2013-07-16 17:13:14

标签: linux bash terminal putty gnome-terminal

我不得不运行一个命令行工具(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

之类的内容

我有什么想法可以防止这种情况发生?

2 个答案:

答案 0 :(得分:93)

执行命令reset,您的终端应该恢复(reference)。

这个问题通常在将二进制数据转储到终端STDOUT时发生,当收到转义的转义代码时,可以通过更改文本的颜色,禁用回显甚至更改字符集来执行任何操作。

避免这种情况的简单方法是确保不将未知二进制数据转储到终端,如果必须将其转换为十六进制以确保它不会更改终端设置。

答案 1 :(得分:4)

要详细说明Joshua Briefman's answer,执行reset -c只会重置导致问题的控制字符:

  

tsetreset - 终端初始化

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)使终端工作,因为回车可能不再在异常状态下工作。此外,终端通常不会回显命令。