0

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

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

3 回答 3

3

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

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

somecommand | tr -cd '\11\12\15\40-\176'
于 2012-04-04T01:14:30.927 回答
2

您的终端不仅仅显示文本,它还响应影响终端设置的各种转义序列,这些转义序列可以更改字体、字符集、大小和其他内容。

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

于 2012-04-04T01:13:38.680 回答
2

另一个尝试的技巧是echoCtrl-VCtrl-O。^O 字符移出 VT100 样式终端的备用字符集。

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

于 2012-04-04T01:15:50.223 回答