有时我不得不运行一个命令行工具(一个Python脚本),它的输出似乎 destruct 了我的终端.

例如,问题发生后,如果我键入ENTERpwdENTER,我将看到:

[userA@host006 ~]$
[userA@host006 ~]$ pwd
/home/userA
[userA@host006 ~]$

但实际上输出是:

[userA@host006 ~]$ [userA@host006 ~]$ /home/userA
                                                             [userA@host006 ~]$

解决这个问题的唯一方法是关闭那个终端,然后启动一个新的终端.

可能相关:脚本输出包含一些基于终端的格式(例如,反转前台/后台以突出显示一些状态消息).如果我把这个输出转储到一个文件中,我可以看到类似[07mSome Message Here[0m的东西.

我能做些什么来防止这种情况?

推荐答案

执行命令reset,终端应恢复(reference).

这个问题通常发生在将二进制数据转储到终端STDOUT时,当处理接收到的转义码时,终端STDOUT可以做任何事情,从更改文本的 colored颜色 、禁用echo,甚至更改字符集.

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

Linux相关问答推荐

在Groff mm中定义页眉不会更改第一页中的页眉

如何正确Forking 并完成进程以避免 EAGAIN 错误

如何让xargs对 bash 脚本中find命令找到的所有文件执行?

为什么组合的查找和重命名命令在 bash shell 下不能按预期工作?

在不编写任何代码的情况下,是否有一个命令可以检索当前 shell 的亲和力中的可用内核数?

使用 AWK 过滤 Linux 输出

Bash shift 改变了关联数组的期望值

文件未在脚本中使用 cp 命令复制到 Docker 容器中

使用 awk 将索引列添加到 csv

Linux 如何将主机文件作为用户的输入并将其调用到脚本中

使用打印命令 Select 子域

argv的编码是什么?

C.UTF-8 和 en_US.UTF-8 语言环境有什么区别?

如何下载较旧的 google play 服务?

让 sudo 和 nohup 一起工作

如何在字符串中查找子字符串(或如何 grep 变量)?

Docker:您是否try 连接到没有 TLS 的启用 TLS 的守护进程?

如何在 UNIX 中将字符串转换为整数

svn over HTTP 代理

如何将 ISO8859-15 转换为 UTF8?