Unix中最奇怪的错误

时间:2012-04-04 01:08:04

标签: unix

甚至不知道如何解释这个,但我连接到远程计算机并执行一个命令,将各种东西输出到stdout大约10分钟。 (我基本上是在一个工具上运行一些实验)。在执行过程中的一段时间后,输出奇怪的英文字符会变成下面的字符,即使执行完毕也会保持这样。下面是我在命令行中键入echo“what the hell”,然后输出结果。除非我使用ssh,否则不会发生这种情况。到底是怎么回事?

°┤⎽␋⎺┼02% ␊␌␤⎺ "┬␤▒├ ├␤␊ ␤␊┌┌" 
 ┬␤▒├ ├␤␊ ␤␊┌┌
°┤⎽␋⎺┼02% 

3 个答案:

答案 0 :(得分:3)

通常,将可能包含二进制数据的任意文本输出到终端是不安全的。它可能包括终端逃脱等。

您可以将其添加到管道中以删除除可打印的ascii字符之外的所有内容:

somecommand | tr -cd '\11\12\15\40-\176'

答案 1 :(得分:2)

您的终端不仅显示文本,还会响应影响终端设置的各种转义序列,这可能会更改字体,字符集,大小等内容。

当您输出二进制数据时,无论是故意还是由于某些错误(例如打印出未初始化的数组),一些二进制数据恰好是终端解释的特殊代码。

答案 2 :(得分:2)

另一个尝试的技巧是echo Ctrl-V Ctrl-O 。对于VT100样式的终端,^ O字符移出备用字符集。

如果这不起作用(并且所有其他答案都不起作用),请关闭终端并重新连接。