为什么在 PuTTY 上运行 `cat /etc/localtime` 会在提示符中显示“PuTTY”流?

为什么在 PuTTY 上运行 `cat /etc/localtime` 会在提示符中显示“PuTTY”流?

我随机试验了一下,发现cat /etc/localtime在PuTTY上运行和在xterm上运行有不同的效果。

例子:

root@webtest:~# cat /etc/localtime
TZif2

      ▒▒Kmp▒▒ǀ▒▒▒p▒Ƀprp▒▒▒▒_Tp▒▒▒p▒A▒p▒nop▒#
▒O▒▒▒p▒▒▒ɧ▒#▒Op▒▒▒k▒p"p▒r▒p▒Pp▒2Lp▒▒p▒▒▒p▒▒p▒ȷ

答案1

这是一个常见问题解答(对于腻子):

A.7.12 当我 cat 一个二进制文件时,我在命令行上看到“PuTTYPuTTYPuTTY”。

那就别那么做。

这是设计好的行为;当 PuTTY 从远程服务器接收到字符 Control-E 时,它会将其解释为识别自身的请求,因此它会发回字符串“PuTTY”,就好像该字符串已在键盘上输入一样。 Control-E 只能由准备处理响应的程序发送。将二进制文件写入终端可能会输出许多 Control-E 字符,并导致此行为。不要这样做。这是一个糟糕的计划。

为了减轻影响,您可以将应答字符串配置为空(请参阅第 4.3.7 节);但是将二进制文件写入终端可能会导致各种其他令人不快的行为,因此这只是一个小小的补救措施。

PuTTY 的开发人员一开始就是复制东西,有时他们忘记了原因。 xterm 中的应答序列(一段时间)将回显“xterm”。 但这种情况在 1999 年就消失了

将默认应答响应更改为空字符串。

尽管如此,您仍然会发现有人说 xterm 会这样做(默认情况下)。

当终端发送应答响应时,结果就像您有打字的该信息。您的 shell(或其他程序)将回显这些字符。

答案2

/etc/localtime是二进制文件的符号链接,而不是文本文件。将二进制文件的内容转储到终端可能会产生有趣且意想不到的结果,特别是如果某些二进制数据恰好与终端控制代码匹配。 PuTTY 可能有一个控制代码来输出其名称,而 xterm 没有,或者如果有,它的解析方式也不同。

相关内容