我使用 Putty 作为终端仿真器来控制一些设备。协议是发送命令并接收回复,每个回复都以 CR/LF 结尾。命令和回复的格式几乎相同。我想用不同的颜色显示它们,以便清楚地区分它们。
我找到了颜色设置,但没有任何东西可以区分传输的字符颜色和接收的字符颜色。Putty 不能做到这一点吗?
答案1
您所寻找的功能在终端中并不存在,因为“传输的字符”与“接收的字符”的概念并不像您想象的那样存在。从终端的角度来看,屏幕上只显示“接收的字符”。
我确信你能举出很多例子,其中按下键盘键x
会导致字母x
出现在屏幕上。也许还有其他变化,比如将行的其余部分向右推。我确信你能举出很多例子,其中按下键盘键x
不会不是导致字母x
出现在屏幕上。也许会出现其他内容。也许整个屏幕被重新绘制成不同的颜色,甚至可能不涉及一个x
字母。也许屏幕上什么都没有改变。
即使x
出现单个字符,终端也不会决定打印与按键对应的字母。它会将该键码发送到远程方(内核,内核又可能会将其转发到本地应用程序,本地应用程序又可能会将其远程转发;或者可能会通过串行线路发送等),而不会更改显示。现在,远程方通常决定绘制字母x
,该指令被发回,终端收到绘制一封信x
。即使发生这种情况,此操作也与按键和发送的x
字母没有任何关联。
您应该修改/配置远程设备,使其发出颜色变化的转义序列、独特的提示、每个命令输出后的空行,或者您喜欢的任何其他视觉辅助。或者修补一些终端仿真器,应用复杂而不可靠的启发式方法来猜测(基于时间、将出现的字母与之前的按键匹配等)它是“输入”还是“输出”。或者为通信软件(例如 telnet、netcat)编写一个前端包装器来实现这种魔力。
现在,为了完成这幅图景,我必须提一下是“发送/接收模式”(SRM)转义序列,允许打开终端仿真器本地回显所按下的键的模式,并伴有远程方不回显它们的设置,但是,这是一个非常有问题的古老遗产,今天可能没有人使用,您的设备很可能也不会使用。我们取消了对 VTE 的支持三年多前,没有人抱怨。这将是一个终端可以理论上可以改变颜色,但我怀疑是否有人会费心去实现这一点。