这是一个纯粹出于好奇的问题:
我在 bash 中有一个自定义 PS1 设置,它只是当前目录,后跟一个小写的 lambda ( λ
),例如~λ
。我不小心将它cat
用于二进制文件,取消了输出,随后在会话的剩余时间内λ
变成了两个日文字符ホサ
。当从其他地方粘贴此字符时,它也显示为这两个日文字符。
现在我的问题是,这个二进制文件的输出如何改变 bash 解释 Unicode 字符的方式?
答案1
我的问题是,这个二进制文件的输出如何改变 bash 解释 Unicode 字符的方式?
标准 Unix 终端支持ANSI/VT-100 命令它可以控制光标、颜色和字体。当您在屏幕上输入二进制文件时,某些二进制字符可能会意外地与此类控制代码匹配并设置终端的属性。
要将终端恢复到其默认状态,请运行:
reset
VT-100 控制序列示例
如果您希望终端上的文本闪烁,请输入:
echo -e '\E[5m'
如果要将显示切换为反向视频,请输入:
echo -e '\E[7m'
作为一个更复杂的例子,考虑make
可以产生大量输出的命令。为了更容易发现重要的事情,你可能希望在粗体ERR
显示的同时以反向视频突出显示。WARNING
以下代码将 VT-100 控制序列添加到输出中以make
在终端上获得以下突出显示:
make 2>&1 | sed -e 's/.*\bERR.*/\x1b[7m&\x1b[0m/i' -e 's/.*\bWARN.*/\x1b[1m&\x1b[0m/i'
以上内容是故意添加控制序列的。当将二进制文件输入到屏幕上时,无法预测会意外激活哪些 VT-100 控制序列。