甚至不知道如何解释这一点,但我连接到远程计算机并执行一个命令,该命令将各种内容输出到标准输出大约 10 分钟。(我基本上是在一个工具上运行一些实验)。在执行过程中经过一段时间后,正在输出的英文字符奇怪地变成了如下字符,并且即使在执行完成后也保持不变。下面是我在命令行中键入 echo "what the hell",然后是结果输出。除非我使用 ssh,否则这不会发生。到底是怎么回事?
°┤⎽␋⎺┼02% ␊␌⎺ "┬▒├ ├␊ ␊┌┌"
┬▒├ ├␊ ␊┌┌
°┤⎽␋⎺┼02%
甚至不知道如何解释这一点,但我连接到远程计算机并执行一个命令,该命令将各种内容输出到标准输出大约 10 分钟。(我基本上是在一个工具上运行一些实验)。在执行过程中经过一段时间后,正在输出的英文字符奇怪地变成了如下字符,并且即使在执行完成后也保持不变。下面是我在命令行中键入 echo "what the hell",然后是结果输出。除非我使用 ssh,否则这不会发生。到底是怎么回事?
°┤⎽␋⎺┼02% ␊␌⎺ "┬▒├ ├␊ ␊┌┌"
┬▒├ ├␊ ␊┌┌
°┤⎽␋⎺┼02%
通常,将可能包含二进制数据的任意文本输出到终端是不安全的。它可能包括终端逃逸等。
您可以将其添加到管道中以删除除可打印的 ascii 字符之外的所有内容:
somecommand | tr -cd '\11\12\15\40-\176'
您的终端不仅仅显示文本,它还响应影响终端设置的各种转义序列,这些转义序列可以更改字体、字符集、大小和其他内容。
当您输出二进制数据时,无论是故意的,还是由于某些错误(例如打印出未初始化的数组),其中一些二进制数据恰好是终端解释的特殊代码。
另一个尝试的技巧是echoCtrl-VCtrl-O。^O 字符移出 VT100 样式终端的备用字符集。
如果这不起作用(并且所有其他答案都不起作用),请关闭您的终端并重新连接。