好吧,所以最近我遇到过几次如果有人会echo 'G1o=' | base64 -d
在终端上运行,你会得到
username@hostname:~$62;9;c
我认为这与语言环境有关,但是将其置于命令输出之后是“正常”行为吗?
base64G1o=
解码为十六进制1B 5a
,即ESC Z. 这就是DECID
转义序列,在终端实际上不是计算机的一部分,而是通过串行电缆连接的设备的时代,这是计算机可以询问终端到底是什么的方式。(这实际上不是标准;它是由 DEC 制造的终端实现的私有代码;因此是 DEC IDentification。DEC 代表数字设备公司,以制造可能是第一台台式计算机 PDP-8 的机器而著称,这是我拥有的机器在我十几岁的时候学习编码的乐趣。)
奇怪的是,终端仿真器仍然支持这些东西,所以如果你将 ESC-Z 写入终端程序,它会通过告诉你它模糊地伪装成什么样的历史终端来响应。例如,如果您要在 Linux 控制台中执行此操作,它会响应:ESC [ ? 6 c
这是 DEC VT-102 的代码。
(顺便说一句,您的终端仿真器显然正在响应ESC [ ? 62;9 c
,这是具有各种扩展“国家替换字符”集的 VT-220 的代码——这就是其中的;9
一部分。)
取决于您认为“正常”的内容。所有程序都设置为 0 和 1,按特殊顺序排列。显然,'G' 和 '1' inbase64
分别是 'enter' 和 'end of line'。要确认这一点,只需将序列更改为任何其他序列。